Compartir a través de


Compatibilidad con controladores para OpenXPS

Importante

Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con las aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.

Para obtener más información, consulte la guía de diseño de aplicaciones de soporte técnico de impresión.

OpenXPS es el formato de especificación de papel Open XML para documentos y se basa en la especificación estándar Ecma International.

Para obtener la información más actualizada sobre esta especificación, consulte Especificación de papel Open XML.

Windows 8 proporciona compatibilidad completa con OpenXPS, en paralelo con compatibilidad continua con el formato Microsoft XPS existente. Este tema se centra en la compatibilidad con OpenXPS a través del modelo de controlador v4. Para obtener compatibilidad con OpenXPS que sea relevante para los desarrolladores de aplicaciones de Windows, consulte Compatibilidad de aplicaciones para impresión OpenXPS.

Escenarios de OpenXPS admitidos

La ruta de impresión de Windows se ha desarrollado para asegurarse de que el formato XPS enviado coincida con un formato compatible del controlador de impresión de destino y convertirá los formatos según sea necesario. Windows también proporciona API para consultar el controlador de impresión, de modo que la aplicación pueda proporcionar elementos compatibles y evitar cualquier conversión adicional dentro del sistema de impresión.

Un controlador de impresión puede usar su manifiesto para indicar si admite Microsoft XPS, Open XPS o ambos formatos. Microsoft XPS o OpenXPS se pueden presentar a los filtros de la canalización de filtro de impresión, mediante las interfaces de flujo y modelo de objetos (OM) existentes: los controladores no requieren nuevas interfaces para admitir OpenXPS. El formato que se presenta a los filtros depende del formato admitido por el controlador o del formato proporcionado por la aplicación.

Microsoft XPS Document Writer (MXDW) se ha actualizado para permitir que MXDW pueda generar Microsoft XPS o OpenXPS desde cualquier aplicación de escritorio de Windows. Del mismo modo, microsoft XPS Viewer y la aplicación Reader en Windows 8 pueden abrir ambos formatos XPS. Si es necesario, los usuarios pueden imprimir desde el Visor XPS a MXDW para convertir formatos.

Escenarios de OpenXPS no admitidos

Algunas funcionalidades heredadas no se admiten o proporcionan una experiencia degradada cuando se usan con OpenXPS.

No compatible: el envío de archivos OpenXPS directamente al administrador de trabajos de cola (omitiendo XPS Print API) es un escenario no compatible. Al hacerlo, se producirán los siguientes problemas de funcionalidad:

  • Los archivos de cola xpS enviados directamente al administrador de colas se tratarán como MSXPS y se controlarán en consecuencia.

  • Los resultados de enviar un archivo OpenXPS directamente al administrador de trabajos de cola no están definidos y probablemente provocarán un error en el trabajo de impresión.

Nota No hay planes para proporcionar compatibilidad con este escenario.

No recomendado: No se recomienda enviar un flujo openXPS desde una aplicación directamente a XPS Print API. Por ejemplo, no envíe una secuencia OpenXPS directamente al método StartXPSPrintJob. Si lo hace, la conversión resultante de un tipo de XPS a otra, ya que una secuencia puede ser muy costosa para el rendimiento.

En su lugar, debe usar IPrintDocumentPackageTarget para enviar el trabajo de impresión como un OM XPS para evitar la degradación del rendimiento.

No recomendado: Enviar un archivo de cola XPS directamente al administrador de colas. Si lo hace, el sistema de impresión no encontrará los metadatos necesarios agregados por las API de ruta de impresión, suponga que el formato es MSXPS e intentará convertirlo en OpenXPS. Si el archivo de cola que se envió directamente al administrador de colas era un archivo con formato OpenXPS, el intento de la canalización de filtro de impresión para "convertirlo" en OpenXPS tendrá resultados indefinidos. Si el archivo que se envió al administrador de colas era un archivo con formato MSXPS y el controlador es un controlador de solo OpenXPS, la conversión por la canalización de filtro de impresión a OpenXPS se realizará correctamente. Pero esta conversión en fase tardía provocará una pérdida significativa en el rendimiento del sistema de impresión.

Impacto en desarrolladores de aplicaciones

Para obtener información sobre el impacto en los desarrolladores de aplicaciones con respecto a la compatibilidad de Windows 8 con OpenXPS, consulta Compatibilidad de aplicaciones para impresión openXPS.

Impacto en los desarrolladores de controladores

Estos son los pasos básicos para habilitar OpenXPS en un controlador de impresión v4:

  • Manifiesto del controlador: agregue "OpenXPS" a la sección Representación del controlador.

  • Manifiesto del controlador: agregue "oxps" a la sección FileSave, si procede.

  • Canalización de filtro: actualice los filtros de impresión para controlar los elementos OpenXPS.

Para una secuencia determinada y con las interfaces de objeto adecuadas, un cliente puede usar el formato OpenXPS para transferir datos a los filtros de la canalización de filtro de impresión. Para transferir un flujo de datos, el cliente usa las interfaces IID_IPrintReadStream y IID_IPrintWriteStream. Para transferir datos a un componente de OM, el cliente usa las interfaces IID_IXpsDocumentProvider y IID_IXpsDocumentConsumer. Los controladores que declaran compatibilidad con OpenXPS tendrán que asegurarse de que los filtros de impresión proporcionados pueden controlar correctamente el formato OpenXPS cuando este formato se recibe del administrador de canalizaciones.

Manifiesto del controlador: sección DriverRender. Durante la instalación del controlador, el proceso de instalación comprueba la sección DriverRender del manifiesto para ver si la entrada XpsFormat incluye OpenXPS. La entrada XpsFormat puede incluir XPS (para Microsoft XPS) y OpenXPS, para indicar compatibilidad dual. El orden en que se enumeran los dos formatos en la entrada XpsFormat determina el formato preferido para el controlador.

Estos son algunos ejemplos de cómo actualizar la sección DriverRender.

Indica la compatibilidad solo con OpenXPS:

[DriverRender]
XpsFormat = OpenXPS

Indica la compatibilidad solo con MSXPS:

[DriverRender]
XpsFormat = XPS

Indica la compatibilidad con ambos formatos, con una preferencia para OpenXPS:

[DriverRender]
XpsFormat = OpenXPS,XPS

Indica la compatibilidad con ambos formatos, con una preferencia para MSXPS:

[DriverRender]
XpsFormat = XPS,OpenXPS

El desarrollador del controlador determina el formato preferido para su controlador de impresión V4, y esta decisión se basa en la funcionalidad que el controlador se diseñó para proporcionar. Por ejemplo, se podría desarrollar un controlador de impresión para proporcionar compatibilidad con JPEG XR para imágenes de alta fidelidad.

El sistema de impresión toma varias decisiones basadas en la información driverRender del manifiesto. Estos son algunos ejemplos de esas decisiones:

  • Trabajos de impresión basados en GDI enviados a controladores v4

    Microsoft XPS Document Converter (MXDC) toma la entrada del trabajo de impresión GDI y convierte el trabajo en un archivo de cola XPS. El formato de ese archivo de cola coincidirá con el formato XPS preferido indicado en la sección DriverRender del manifiesto.

  • Conversión de formato de XPS Print API

    XpS Print API consultará los formatos XPS admitidos para el controlador de destino. Si el controlador admite ambos formatos, XPS Print API pasará el trabajo de impresión XPS al administrador de trabajos de impresión tal y como lo envió la aplicación. No se realizará ninguna conversión.

    Si el controlador de destino solo admite uno u otro formato, el trabajo se convertirá al formato correcto antes de la puesta en cola.

    Si no se proporciona xpsFormat en el manifiesto, el comportamiento solo será MSXPS. La entrada OpenXPS se convertirá en MSXPS. Este comportamiento proporciona la compatibilidad con versiones anteriores más sólida para los controladores.

  • Archivos XPS enviados directamente a spooler

    Los archivos XPS enviados directamente al administrador de colas son, de forma predeterminada, MSXPS. No se admite el envío de OpenXPS directo al administrador de colas. Sin embargo, .NET antes de la versión 4.5+ serializó su propio MSXPS y envió el trabajo directamente al administrador de trabajos. Este comportamiento se implementó antes de la introducción de XPS Print API (xpsprint.dll).

    Para proporcionar compatibilidad con versiones anteriores para estas aplicaciones .NET, el administrador de canalizaciones de filtro de impresión comprobará el archivo de cola para determinar si se recibió direct-to-spooler. Si es así, se supone que es MSXPS. El administrador de canalizaciones de filtro de impresión consultará los formatos XPS del controlador en ese momento. Si el controlador admite MSXPS, no se realizará ninguna conversión. Si el controlador solo admite OpenXPS, el administrador de canalizaciones de filtro de impresión realizará una conversión del archivo. La conversión en este momento del trabajo es costosa de rendimiento; sin embargo, garantiza que las aplicaciones .NET heredadas podrán imprimir en nuevos controladores OpenXPS v4.

Manifiesto del controlador: sección ArchivoGuardar. La sección FileSave del manifiesto del controlador de impresión v4 proporciona extensiones para el cuadro de diálogo Guardar archivo usado por el puerto PORTPROMPT: . (PORTPROMPT: debe usarse en lugar de FILE: en Windows 8.1, porque PORTPROMPT: permitirá a los usuarios acceder a todas las ubicaciones de archivos a las que tienen derechos, incluso cuando la aplicación se ejecuta en modo de derechos bajos). Las entradas de la sección FileSave están asociadas a las entradas de la sección DriverRender por índice.

Ejemplo:

[FileSave]
xps=0
oxps=0

[DriverRender]
XpsFormat=XPS,OpenXPS

Esto garantizará que cuando el usuario envíe un trabajo de impresión a este controlador y que el puerto esté establecido en PORTPROMPT:, el cuadro de diálogo Guardar archivo mostrará XPS y OpenXPS como opciones de tipo de archivo en el cuadro de diálogo y aplicará .xps o .oxps respectivamente, como extensión de archivo.

Para obtener información adicional sobre otras opciones de la sección Guardar archivo del manifiesto, vea Manifiesto del controlador V4.

Compatibilidad de aplicaciones para la impresión openXPS

Open XML Paper Specification

Manifiesto del controlador V4