Share via


Compatibilidad de aplicaciones para la impresión openXPS

OpenXPS es el formato de especificación de papel Open XML para documentos y se basa en la especificación estándar De la Asociación Europea de Fabricantes de Equipos (ECMA).

Windows 8 proporciona compatibilidad total con la impresión openXPS a través del modelo de controlador de impresión v4, en paralelo con compatibilidad continua con el formato Microsoft XPS. Y este tema se centra en la parte de esta compatibilidad que es relevante para los desarrolladores de aplicaciones de Windows. Para obtener información sobre los requisitos de controladores para la compatibilidad con OpenXPS, consulte Compatibilidad con controladores para OpenXPS.

Envío de datos XPS al sistema de impresión

Se recomienda usar IPrintDocumentPackageTarget para enviar todos los trabajos de impresión XPS al sistema de impresión. IPrintDocumentPackageTarget acepta el modelo de objetos XPS (OM) sin serialización y que ayuda a mejorar el rendimiento general.

Este es un breve resumen de la interfaz IPrintDocumentPackageTarget :

  • Esta interfaz admite la impresión desde soluciones personalizadas, así como aplicaciones de escritorio.

  • En el caso de las aplicaciones de escritorio, se puede usar en lugar de StartXpsPrintJob1.

  • Disponible en Windows 7 con Service Pack 1 (SP1) + Actualización de plataforma y Windows 8.

  • Incluya DocumentTarget.h en proyectos para usar estas API.

Las aplicaciones que consumen documentos OpenXPS deben tener en cuenta que el tipo MIME para OpenXPS es el siguiente:

application\\oxps

Envío de datos de OpenXPS a XPS Print API

Específico de OpenXPS, XPS OM acepta MSXPS y OpenXPS, y proporciona métodos para la conversión y serialización a cualquiera de los formatos. Esto permite a los desarrolladores de aplicaciones ser independientes del controlador de destino, si lo desean. Esto también significa que los desarrolladores de aplicaciones siempre pueden enviar trabajos de impresión como XPS OM a StartXpsPrintJob1 o IDocumentPackageTarget, sabiendo que el sistema de impresión controlará cualquier conversión necesaria.

Por supuesto, evitar la conversión entre formatos XPS mejorará el rendimiento de un extremo a otro. Desde la aplicación, el desarrollador puede comprobar la siguiente clave del Registro para determinar el formato XPS preferido del controlador de impresión de destino:

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

Una vez que se haya determinado el formato XPS preferido, la aplicación puede proporcionar objetos XPS OM que no requerirán conversión. De particular nota es el uso de la foto HD en MSXPS y JPEGXR en OpenXPS. La conversión de JPEGXR a HD Photo es relativamente ligera, ya que la diferencia principal en esta conversión es que HD Photo omite 4 bits de control que JPEGXR requiere. Sin embargo, la conversión de foto HD a JPEGXR requiere que se vuelva a codificar toda la imagen para generar los bits de control necesarios. Por lo tanto, proporcionar imágenes JPEGXR para imágenes de alta resolución garantizará la compatibilidad con OpenXPS y minimizará el costo de conversión de la imagen para MSXPS.

El encabezado Xpsobjectmodel_1.h define las API y los objetos adicionales para OpenXPS. Y la interfaz IXpsOMObjectFactory1 proporciona métodos adicionales para la conversión de imágenes. Esta es la sintaxis:

IXpsOMObjectFactory1->ConvertHDPhotoToJpegXR(IXpsOMImageResource *imageResource);

IXpsOMObjectFactory1->ConvertJpegXRToHDPhoto(IXpsOMImageResource *imageResource);

Windows 8 proporciona las siguientes enumeraciones nuevas y actualizadas.

Nueva enumeración:

XPS_DOCUMENT_TYPE

Enumeración actualizada

XPS_IMAGE_TYPE

Los nuevos métodos GetDocumentType permiten a una aplicación determinar el formato XPS de los documentos. Están disponibles en IXpsOMObjectFactory1, IXpsOMPackage1 e IXpsOMPage1. Esta es una lista de los métodos.

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

Windows 8 proporciona los siguientes nuevos códigos de error compatibles con OpenXPS:

XPS\_E\_MISMATCHED\_NAMESPACE.
Este error se devuelve si hay un espacio de nombres no coincidente.
XPS\_E\_ABSOLUTE\_REFERENCE.
Este error se devuelve si MSXPS usa URI absolutos en referencias internas o intenta usar referencias internas para serializar en la secuencia. Esto se debe a que XPS OM genera URI relativos. Y aunque MSXPS admite URI relativos y absolutos, OpenXPS requiere URI relativos.

Compatibilidad con controladores para OpenXPS

IPrintDocumentPackageTarget

IXpsOMObjectFactory1::GetDocumentTypeFromFile

IXpsOMObjectFactory1::GetDocumentTypeFromStream

IXpsOMPackage1::GetDocumentType

IXpsOMPage1::GetDocumentType

XPS_DOCUMENT_TYPE

XPS_IMAGE_TYPE