Partager via


Prise en charge des applications pour l’impression OpenXPS

OpenXPS est le format de spécification de papier Open XML pour les documents, et il est basé sur la spécification standard ECMA (European Computer Manufacturers Association).

Windows 8 fournit une prise en charge complète de l’impression OpenXPS via le modèle de pilote d’impression v4, côte à côte avec une prise en charge continue du format Microsoft XPS. Et cette rubrique se concentre sur la partie de cette prise en charge qui est pertinente pour les développeurs d’applications Windows. Pour plus d’informations sur la configuration requise des pilotes pour la prise en charge d’OpenXPS, consultez Prise en charge des pilotes pour OpenXPS.

Envoi de données XPS au système d’impression

Nous vous recommandons d’utiliser IPrintDocumentPackageTarget pour envoyer tous les travaux d’impression XPS au système d’impression. IPrintDocumentPackageTarget accepte le modèle objet XPS sans sérialisation, ce qui permet d’améliorer les performances globales.

Voici un bref résumé de l’interface IPrintDocumentPackageTarget :

  • Cette interface prend en charge l’impression à partir de solutions personnalisées ainsi que d’applications de bureau.

  • Pour les applications de bureau, il peut être utilisé à la place de StartXpsPrintJob1.

  • Disponible sur Windows 7 avec Service Pack 1 (SP1) + Platform Update et Windows 8.

  • Incluez DocumentTarget.h dans les projets pour utiliser ces API.

Les applications qui utilisent des documents OpenXPS doivent noter que le type MIME pour OpenXPS est le suivant :

application\\oxps

Envoi de données OpenXPS à l’API d’impression XPS

Spécifique à OpenXPS, xpS OM accepte à la fois MSXPS et OpenXPS, et fournit des méthodes de conversion et de sérialisation dans l’un ou l’autre format. Cela permet aux développeurs d’applications d’être indépendants du pilote cible, s’ils le souhaitent. Cela signifie également que les développeurs d’applications peuvent toujours envoyer des travaux d’impression en tant que modèle XPS à StartXpsPrintJob1 ou IDocumentPackageTarget, sachant que le système d’impression gère toute conversion nécessaire.

Bien sûr, l’empêchement de la conversion entre les formats XPS améliore les performances de bout en bout. À partir de l’application, le développeur peut case activée la clé de Registre suivante pour déterminer le format XPS préféré du pilote d’impression ciblé :

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

Une fois que le format XPS préféré a été déterminé, l’application peut fournir des objets d’om XPS qui ne nécessitent pas de conversion. Il est particulièrement important d’utiliser photo HD dans MSXPS et JPEGXR dans OpenXPS. La conversion de JPEGXR en photo HD est relativement légère, car la principale différence dans cette conversion est que HD Photo ignore les 4 bits de contrôle requis par JPEGXR. Toutefois, la conversion de photo HD en JPEGXR nécessite que l’image entière soit réencodée afin de générer les bits de contrôle requis. Ainsi, la fourniture d’images JPEGXR pour les images haute résolution garantit la compatibilité avec OpenXPS et réduit le coût de conversion de l’image pour MSXPS.

L’en-tête Xpsobjectmodel_1.h définit les API et les objets supplémentaires pour OpenXPS. Et l’interface IXpsOMObjectFactory1 fournit des méthodes supplémentaires pour la conversion d’images. Voici la syntaxe :

IXpsOMObjectFactory1->ConvertHDPhotoToJpegXR(IXpsOMImageResource *imageResource);

IXpsOMObjectFactory1->ConvertJpegXRToHDPhoto(IXpsOMImageResource *imageResource);

Windows 8 fournit les énumérations nouvelles et mises à jour suivantes.

Nouvelle énumération :

XPS_DOCUMENT_TYPE

Énumération mise à jour

XPS_IMAGE_TYPE

Les nouvelles méthodes GetDocumentType permettent à une application de déterminer le format XPS des documents. Elles sont disponibles dans IXpsOMObjectFactory1, IXpsOMPackage1 et IXpsOMPage1. Voici la liste des méthodes.

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

Windows 8 fournit les nouveaux codes d’erreur suivants pour la prise en charge d’OpenXPS :

XPS\_E\_MISMATCHED\_NAMESPACE.
Cette erreur est retournée, s’il existe un espace de noms incompatible.
XPS\_E\_ABSOLUTE\_REFERENCE.
Cette erreur est retournée si MSXPS utilise des URI absolus dans les références internes ou tente d’utiliser des références internes pour sérialiser dans le flux. En effet, XPS OM génère des URI relatifs. Et bien que MSXPS prenne en charge les URI relatifs et absolus, OpenXPS nécessite des URI relatifs.

Prise en charge des pilotes pour OpenXPS

IPrintDocumentPackageTarget

IXpsOMObjectFactory1::GetDocumentTypeFromFile

IXpsOMObjectFactory1::GetDocumentTypeFromStream

IXpsOMPackage1::GetDocumentType

IXpsOMPage1::GetDocumentType

XPS_DOCUMENT_TYPE

XPS_IMAGE_TYPE