Поддержка приложений для печати OpenXPS
OpenXPS — это формат спецификации документа Open XML для документов, основанный на стандартной спецификации Европейской ассоциации производителей компьютеров (ECMA).
Windows 8 обеспечивает полную поддержку печати OpenXPS с помощью модели драйвера печати версии 4, а также постоянную поддержку формата Microsoft XPS. В этом разделе основное внимание уделяется той части этой поддержки, которая относится к разработчикам приложений Windows. Сведения о требованиях к драйверам для поддержки OpenXPS см. в разделе Поддержка драйверов для OpenXPS.
Отправка данных XPS в систему печати
Для отправки всех заданий печати XPS в систему печати рекомендуется использовать IPrintDocumentPackageTarget . IPrintDocumentPackageTarget принимает объектную модель XPS (OM) без сериализации, что помогает повысить общую производительность.
Ниже приведен краткий обзор интерфейса IPrintDocumentPackageTarget :
Этот интерфейс поддерживает печать из специализированных решений, а также классических приложений.
Для классических приложений его можно использовать вместо StartXpsPrintJob1.
Доступно в Windows 7 с пакетом обновления 1 (SP1) и обновлением платформы и Windows 8.
Включите DocumentTarget.h в проекты для использования этих API.
Приложения, использующие документы OpenXPS, должны иметь в виду, что тип MIME для OpenXPS выглядит следующим образом:
- application\\oxps
Отправка данных OpenXPS в API печати XPS
В особенности Для OpenXPS OM XPS принимает как MSXPS, так и OpenXPS, а также предоставляет методы преобразования и сериализации в любой из форматов. Это позволяет разработчикам приложений быть не зависящими от целевого драйвера, если они хотят. Это также означает, что разработчики приложений всегда могут отправлять задания печати как XPS OM в StartXpsPrintJob1 или IDocumentPackageTarget, зная, что система печати будет обрабатывать все необходимые преобразования.
Конечно, предотвращение преобразования между форматами XPS повысит сквозную производительность. В приложении разработчик может проверка следующий раздел реестра, чтобы определить предпочтительный формат XPS целевого драйвера печати:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\[PrintDriverName]\PrintDriverData\XpsFormat
После определения предпочтительного формата XPS приложение может предоставить объекты OM XPS, которые не требуют преобразования. Особое внимание следует отметить использование HD Photo в MSXPS и JPEGXR в OpenXPS. Преобразование из JPEGXR в HD Photo является относительно легким, так как основное различие в этом преобразовании заключается в том, что HD Photo игнорирует 4 контрольных бита, необходимых JPEGXR. Однако для преобразования из hd Photo в JPEGXR требуется повторное кодирование всего изображения для создания необходимых битов элемента управления. Таким образом, предоставление изображений JPEGXR для изображений с высоким разрешением обеспечит совместимость с OpenXPS и минимизирует стоимость преобразования изображения для MSXPS.
Заголовок Xpsobjectmodel_1.h определяет дополнительные API и объекты для OpenXPS. Интерфейс IXpsOMObjectFactory1 предоставляет дополнительные методы преобразования изображений. Ниже приведен синтаксис.
IXpsOMObjectFactory1->ConvertHDPhotoToJpegXR(IXpsOMImageResource *imageResource);
IXpsOMObjectFactory1->ConvertJpegXRToHDPhoto(IXpsOMImageResource *imageResource);
Windows 8 предоставляет следующие новые и обновленные перечисления.
Новое перечисление:
Обновленное перечисление
Новые методы GetDocumentType позволяют приложению определять формат XPS документов. Они доступны в IXpsOMObjectFactory1, IXpsOMPackage1 и IXpsOMPage1. Ниже приведен список методов.
IXpsOMObjectFactory1::GetDocumentTypeFromFile
IXpsOMObjectFactory1::GetDocumentTypeFromStream
IXpsOMPackage1::GetDocumentType
IXpsOMPage1::GetDocumentType
Windows 8 предоставляет следующие новые коды ошибок для поддержки OpenXPS:
- XPS\_E\_MISMATCHED\_NAMESPACE.
- Эта ошибка возвращается, если имеется несовпадение пространства имен.
- Эта ошибка возвращается, если MSXPS использует абсолютные URI во внутренних ссылках или пытается использовать внутренние ссылки для сериализации в потоке. Это связано с тем, что OM XPS создает относительные URI. Хотя MSXPS поддерживает как относительные, так и абсолютные URI, OpenXPS требует относительные URI.
Связанные темы