Udostępnij za pośrednictwem


Obsługa aplikacji na potrzeby drukowania OpenXPS

OpenXPS to format specyfikacji papieru Open XML dla dokumentów, który jest oparty na standardowej specyfikacji European Computer Manufacturers Association (ECMA).

System Windows 8 zapewnia pełną obsługę drukowania OpenXPS za pośrednictwem modelu sterownika wydruku w wersji 4, równolegle z ciągłą obsługą formatu Microsoft XPS. Ten temat koncentruje się na części tej obsługi, która jest istotna dla deweloperów aplikacji systemu Windows. Aby uzyskać informacje o wymaganiach sterowników dotyczących obsługi OpenXPS, zobacz Driver Support for OpenXPS.

Wysyłanie danych XPS do systemu drukowania

Zalecamy użycie IPrintDocumentPackageTarget do wysyłania wszystkich zadań drukowania XPS do systemu wydruku. IPrintDocumentPackageTarget akceptuje model obiektów XPS (OM) bez serializacji i pomaga zwiększyć ogólną wydajność.

Oto krótkie podsumowanie interfejsu IPrintDocumentPackageTarget:

  • Ten interfejs obsługuje drukowanie z dostosowanych rozwiązań, a także aplikacji klasycznych.

  • W przypadku aplikacji stacjonarnych można go użyć zamiast StartXpsPrintJob1.

  • Dostępne w systemie Windows 7 z dodatkiem Service Pack 1 (SP1) i aktualizacją platformy oraz Windows 8.

  • Uwzględnij DocumentTarget.h w projektach, aby korzystać z tych API.

Aplikacje, które korzystają z dokumentów OpenXPS, powinny pamiętać, że typ MIME dla openXPS jest następujący:

aplikacja\\oxps

Wysyłanie danych OpenXPS do interfejsu API drukowania XPS

Specyficzne dla OpenXPS, XPS OM akceptuje zarówno MSXPS, jak i OpenXPS, i udostępnia metody konwersji i serializacji do obu formatów. Dzięki temu deweloperzy aplikacji mogą być niezależni od sterownika docelowego, jeśli chcą. Oznacza to również, że deweloperzy aplikacji mogą zawsze przesyłać zadania drukowania jako OM XPS do startXpsPrintJob1 lub IDocumentPackageTarget, wiedząc, że system wydruku będzie obsługiwać wszelkie niezbędne konwersje.

Oczywiście zapobieganie konwersji między formatami XPS poprawi kompleksową wydajność. W aplikacji deweloper może sprawdzić następujący klucz rejestru, aby określić preferowany format XPS docelowego sterownika wydruku:

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

Po ustaleniu preferowanego formatu XPS aplikacja może udostępniać obiekty OM XPS, które nie będą wymagały konwersji. Szczególnie ważne jest użycie zdjęć HD w MSXPS i JPEGXR w OpenXPS. Konwertowanie z JPEGXR do HD Photo jest stosunkowo lekkie, ponieważ podstawową różnicą w tej konwersji jest to, że HD Photo ignoruje 4 bity sterowania, których wymaga JPEGXR. Jednak konwersja z obrazu HD Photo na JPEGXR wymaga ponownego kodowania całego obrazu w celu wygenerowania wymaganych bitów kontrolnych. W związku z tym dostarczanie obrazów JPEGXR dla obrazów o wysokiej rozdzielczości zapewni zgodność z openXPS i zminimalizować koszt konwersji obrazu dla MSXPS.

Nagłówek Xpsobjectmodel_1.h definiuje dodatkowe interfejsy API i obiekty dla OpenXPS. Interfejs IXpsOMObjectFactory1 udostępnia dodatkowe metody konwersji obrazu. Oto składnia:

IXpsOMObjectFactory1->ConvertHDPhotoToJpegXR(IXpsOMImageResource *imageResource);

IXpsOMObjectFactory1->ConvertJpegXRToHDPhoto(IXpsOMImageResource *imageResource);

System Windows 8 udostępnia następujące nowe i zaktualizowane wyliczenia.

Nowe wyliczenie:

XPS_DOCUMENT_TYPE

Zaktualizowano wyliczenie

XPS_IMAGE_TYPE

Nowe metody GetDocumentType umożliwiają aplikacji określenie formatu dokumentów XPS. Są one dostępne w IXpsOMObjectFactory1, IXpsOMPackage1i IXpsOMPage1. Oto lista metod.

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

System Windows 8 udostępnia następujące nowe kody błędów w obsłudze systemu OpenXPS:

XPS\_E\_MISMATCHED\_NAMESPACE.
Ten błąd jest zwracany, jeśli istnieje niezgodna przestrzeń nazw.
XPS\_E\_ABSOLUTE\_REFERENCE.
Ten błąd jest zwracany, jeśli MSXPS używa bezwzględnych identyfikatorów URI w odwołaniach wewnętrznych lub próbuje użyć odwołań wewnętrznych do serializacji w strumieniu. Wynika to z faktu, że OM XPS generuje względne identyfikatory URI. Mimo że biblioteka MSXPS obsługuje zarówno względne, jak i bezwzględne identyfikatory URI, biblioteka OpenXPS wymaga względnych identyfikatorów URI.

Wsparcie sterowników dla OpenXPS

IPrintDocumentPackageTarget

IXpsOMObjectFactory1::GetDocumentTypeFromFile

IXpsOMObjectFactory1::GetDocumentTypeFromStream

IXpsOMPackage1::GetDocumentType

IXpsOMPage1::GetDocumentType

TYP_DOKUMENTU_XPS

XPS_IMAGE_TYPE