App-Unterstützung für OpenXPS-Druck
OpenXPS ist das Open XML Paper Specification-Format für Dokumente und basiert auf der ECMA-Standardspezifikation (European Computer Manufacturers Association).
Windows 8 bietet vollständige Unterstützung für OpenXPS-Druck über das v4-Druckertreibermodell, und bietet auch weiterhin Unterstützung für das Microsoft XPS-Format. Und dieses Thema konzentriert sich auf den Teil dieser Unterstützung, der für Windows Anwendungsentwickler relevant ist. Informationen zu den Treiberanforderungen für die OpenXPS-Unterstützung finden Sie unter Treiberunterstützung für OpenXPS.
Senden von XPS-Daten an das Drucksystem
Es wird empfohlen, IPrintDocumentPackageTarget zum Senden aller XPS-Druckaufträge an das Drucksystem zu verwenden. IPrintDocumentPackageTarget akzeptiert das XPS-Objektmodell (OM) ohne Serialisierung und trägt so zur Verbesserung der Gesamtleistung bei.
Hier ist eine kurze Zusammenfassung der IPrintDocumentPackageTarget-Schnittstelle:
Diese Schnittstelle unterstützt das Drucken von angepassten Lösungen sowie von Desktopanwendungen.
Für Desktop-Apps kann dies anstelle von StartXpsPrintJob1verwendet werden.
Verfügbar auf Windows 7 mit Service Pack 1 (SP1) + Plattformupdate und Windows 8.
Schließen Sie DocumentTarget.h in Projekte ein, um diese APIs zu verwenden.
Anwendungen, die OpenXPS-Dokumente nutzen, sollten beachten, dass der MIME-Typ für OpenXPS wie folgt lautet:
- \\Anwendungsoxps
Senden von OpenXPS-Daten an die XPS-Druck-API
Spezifisch für OpenXPS akzeptiert XPS OM sowohl MSXPS als auch OpenXPS und stellt Methoden für die Konvertierung und Serialisierung in beide Formate bereit. Dadurch können Anwendungsentwickler bei Bedarf vom Zieltreiber unabhängig sein. Dies bedeutet auch, dass App-Entwickler Druckaufträge immer als XPS OM an StartXpsPrintJob1 oder IDocumentPackageTarget übermitteln können, da sie wissen, dass das Drucksystem alle erforderlichen Konvertierungen verarbeitet.
Natürlich verbessert das Verhindern der Konvertierung zwischen XPS-Formaten die End-to-End-Leistung. In der Anwendung kann der Entwickler den folgenden Registrierungsschlüssel überprüfen, um das bevorzugte XPS-Format des Zieldrucktreibers zu ermitteln:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\[PrintDriverName]\PrintDriverData\XpsFormat
Sobald das bevorzugte XPS-Format bestimmt wurde, kann die Anwendung XPS OM-Objekte bereitstellen, die keine Konvertierung erfordern. Besonders zu beachten ist die Verwendung von HD Photo in MSXPS und JPEGXR in OpenXPS. Die Konvertierung von JPEGXR in HD Photo ist relativ einfach, da der Hauptunterschied bei dieser Konvertierung darin besteht, dass HD Photo 4 Steuerbits ignoriert, die JPEGXR erfordert. Die Konvertierung von HD Photo in JPEGXR erfordert jedoch, dass das gesamte Bild neu codiert wird, um die erforderlichen Steuerbits zu generieren. Daher wird durch die Bereitstellung von JPEGXR-Bildern für Bilder mit hoher Auflösung die Kompatibilität mit OpenXPS sichergestellt und die Konvertierungskosten des Bilds für MSXPS minimiert.
Der Header Xpsobjectmodel _ 1.h definiert die zusätzlichen APIs und Objekte für OpenXPS. Und die IXpsOMObjectFactory1-Schnittstelle stellt zusätzliche Methoden für die Bildkonvertierung bereit. Dies ist die Syntax:
IXpsOMObjectFactory1->ConvertHDPhotoToJpegXR(IXpsOMImageResource *imageResource);
IXpsOMObjectFactory1->ConvertJpegXRToHDPhoto(IXpsOMImageResource *imageResource);
Windows 8 stellt die folgenden neuen und aktualisierten Enumerationen bereit.
Neue Enumeration:
Aktualisierte Enumeration
Mit den neuen GetDocumentType-Methoden kann eine Anwendung das XPS-Format von Dokumenten bestimmen. Diese sind in IXpsOMObjectFactory1, IXpsOMPackage1und IXpsOMPage1verfügbar. Im Folgenden finden Sie eine Liste der Methoden.
IXpsOMObjectFactory1::GetDocumentTypeFromFile
IXpsOMObjectFactory1::GetDocumentTypeFromStream
IXpsOMPackage1::GetDocumentType
IXpsOMPage1::GetDocumentType
Windows 8 stellt die folgenden neuen Fehlercodes zur Unterstützung von OpenXPS bereit:
- NICHT ÜBEREINSTIMMENDER XPS \_ \_ \_ E-NAMESPACE.
- Dieser Fehler wird zurückgegeben, wenn ein nicht übereinstimmender Namespace vorhanden ist.
- Dieser Fehler wird zurückgegeben, wenn MSXPS absolute URIs in internen Verweisen verwendet oder versucht, interne Verweise zum Serialisieren im Stream zu verwenden. Das liegt daran, dass XPS OM relative URIs generiert. Obwohl MSXPS sowohl relative als auch absolute URIs unterstützt, erfordert OpenXPS relative URIs.