Freigeben über


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 den OpenXPS-Druck über das v4-Drucktreibermodell, parallel mit kontinuierlicher Unterstützung für das Microsoft XPS-Format. Dieses Thema konzentriert sich auf den Teil dieser Unterstützung, der für Windows-Anwendungsentwickler relevant ist. Informationen zu 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 zur Verbesserung der Gesamtleistung bei.

Hier ist eine kurze Zusammenfassung der IPrintDocumentPackageTarget-Schnittstelle :

  • Diese Schnittstelle unterstützt das Drucken von maßgeschneiderten Lösungen sowie Desktopanwendungen.

  • Für Desktop-Apps kann dies anstelle von StartXpsPrintJob1 verwendet werden.

  • Verfügbar unter 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:

application\\oxps

Senden von OpenXPS-Daten an die XPS-Druck-API

Speziell für OpenXPS akzeptiert XPS OM sowohl MSXPS als auch OpenXPS und stellt Methoden für die Konvertierung und Serialisierung in beide Formate bereit. Dies ermöglicht es Anwendungsentwicklern, den Zieltreiber unabhängig zu sein, wenn sie möchten. 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 bestimmen:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\[PrintDriverName]\PrintDriverData\XpsFormat

Nachdem das bevorzugte XPS-Format bestimmt wurde, kann die Anwendung XPS OM-Objekte bereitstellen, die keine Konvertierung erfordern. Besonders hervorzuheben 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 zu 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 hochauflösende Bilder die Kompatibilität mit OpenXPS sichergestellt und die Konvertierungskosten des Bilds für MSXPS minimiert.

Der Xpsobjectmodel_1.h-Header definiert die zusätzlichen APIs und Objekte für OpenXPS. Und die IXpsOMObjectFactory1-Schnittstelle bietet zusätzliche Methoden für die Bildkonvertierung. Dies ist die Syntax:

IXpsOMObjectFactory1->ConvertHDPhotoToJpegXR(IXpsOMImageResource *imageResource);

IXpsOMObjectFactory1->ConvertJpegXRToHDPhoto(IXpsOMImageResource *imageResource);

Windows 8 stellt die folgenden neuen und aktualisierten Enumerationen bereit.

Neue Enumeration:

XPS_DOCUMENT_TYPE

Aktualisierte Enumeration

XPS_IMAGE_TYPE

Mit den neuen GetDocumentType-Methoden kann eine Anwendung das XPS-Format von Dokumenten bestimmen. Diese sind in IXpsOMObjectFactory1, IXpsOMPackage1 und IXpsOMPage1 verfügbar. Hier ist eine Liste der Methoden.

IXpsOMObjectFactory1::GetDocumentTypeFromFile
IXpsOMObjectFactory1::GetDocumentTypeFromStream
IXpsOMPackage1::GetDocumentType
IXpsOMPage1::GetDocumentType

Windows 8 bietet die folgenden neuen Fehlercodes zur Unterstützung von OpenXPS:

XPS\_E\_MISMATCHED\_NAMESPACE.
Dieser Fehler wird zurückgegeben, wenn ein nicht übereinstimmender Namespace vorhanden ist.
XPS\_E\_ABSOLUTE\_REFERENCE.
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. Und obwohl MSXPS sowohl relative als auch absolute URIs unterstützt, erfordert OpenXPS relative URIs.

Treiberunterstützung für OpenXPS

IPrintDocumentPackageTarget

IXpsOMObjectFactory1::GetDocumentTypeFromFile

IXpsOMObjectFactory1::GetDocumentTypeFromStream

IXpsOMPackage1::GetDocumentType

IXpsOMPage1::GetDocumentType

XPS_DOCUMENT_TYPE

XPS_IMAGE_TYPE