Prise en charge des pilotes pour OpenXPS

Important

Nous vous recommandons d’utiliser le pilote de classe de boîte de réception IPP de Microsoft, ainsi que les applications de support d’impression (PSA), pour personnaliser l’expérience d’impression dans Windows 10 et 11 pour le développement d’appareils d’imprimante.

Pour plus d’informations, consultez le guide de conception d’application de prise en charge de l’impression.

OpenXPS est le format De spécification de papier Open XML pour les documents, et il est basé sur la spécification standard Ecma International.

Pour obtenir les informations les plus à jour sur cette spécification, consultez Spécification de papier Open XML.

Windows 8 fournit une prise en charge complète d’OpenXPS, côte à côte avec une prise en charge continue du format Microsoft XPS existant. Cette rubrique se concentre sur la prise en charge d’OpenXPS via le modèle de pilote v4. Pour connaître la prise en charge d’OpenXPS pertinente pour les développeurs d’applications Windows, consultez Prise en charge des applications pour l’impression OpenXPS.

Scénarios OpenXPS pris en charge

Le chemin d’accès d’impression Windows a été développé pour garantir que le format XPS envoyé correspond à un format pris en charge du pilote d’impression ciblé et convertira les formats en fonction des besoins. Windows fournit également des API pour interroger le pilote d’impression, afin que l’application puisse fournir des éléments compatibles et éviter toute conversion supplémentaire au sein du système d’impression.

Un pilote d’impression peut utiliser son manifeste pour indiquer s’il prend en charge Microsoft XPS, Open XPS ou les deux formats. Microsoft XPS ou OpenXPS peut être présenté aux filtres dans le pipeline de filtre d’impression, à l’aide des interfaces de flux et de modèle objet (OM) existantes . Aucune nouvelle interface n’est requise par les pilotes pour prendre en charge OpenXPS. Le format présenté aux filtres dépend du format pris en charge par le pilote ou du format fourni par l’application.

L’enregistreur de documents Microsoft XPS (MXDW) a été mis à jour pour permettre à MXDW de générer Microsoft XPS ou OpenXPS à partir de n’importe quelle application de bureau Windows. De même, la Visionneuse Microsoft XPS et l’application Lecteur dans Windows 8 peuvent ouvrir les deux formats XPS. Si nécessaire, les utilisateurs peuvent imprimer à partir de la visionneuse XPS vers MXDW afin de convertir des formats.

Scénarios OpenXPS non pris en charge

Certaines fonctionnalités héritées ne sont pas prises en charge ou offrent une expérience rétrogradée lorsqu’elles sont utilisées avec OpenXPS.

Non pris en charge : l’envoi de fichiers OpenXPS directement au spouleur (en contournant l’API d’impression XPS) est un scénario non pris en charge. Cela génère les problèmes de fonctionnalité suivants :

  • Les fichiers de spoulage XPS envoyés directement au spouleur seront traités comme MSXPS et gérés en conséquence.

  • Les résultats de l’envoi d’un fichier OpenXPS directement au spouleur ne sont pas définis et entraîneront probablement l’échec du travail d’impression.

Note Il n’est pas prévu de prendre en charge ce scénario.

Non recommandé : l’envoi d’un flux OpenXPS à partir d’une application directement à l’API d’impression XPS n’est pas une technique recommandée. Par exemple, n’envoyez pas un flux OpenXPS directement à la méthode StartXPSPrintJob. Si vous effectuez cette opération, la conversion résultante d’une version XPS à une autre en tant que flux peut être très coûteuse pour les performances.

Au lieu de cela, vous devez utiliser IPrintDocumentPackageTarget pour envoyer le travail d’impression sous forme de modèle XPS afin d’éviter la dégradation des performances.

Non recommandé : envoi d’un fichier de spouleur XPS directement au spouleur. Dans ce cas, le système d’impression ne trouvera pas les métadonnées requises ajoutées par les API de chemin d’impression, supposez que le format est MSXPS et tente de le convertir en OpenXPS. Si le fichier de spouleur qui a été envoyé directement au spouleur était un fichier au format OpenXPS, la tentative du pipeline de filtre d’impression de le convertir en OpenXPS aura des résultats non définis. Si le fichier envoyé au spouleur était un fichier au format MSXPS et que le pilote est un pilote OpenXPS uniquement, la conversion par le pipeline de filtre d’impression en OpenXPS réussit. Toutefois, cette conversion en phase tardive entraîne une perte significative des performances du système d’impression.

Impact sur les développeurs d’applications

Pour plus d’informations sur l’impact sur les développeurs d’applications concernant la prise en charge de Windows 8 pour OpenXPS, consultez Prise en charge des applications pour l’impression OpenXPS.

Impact sur les développeurs de pilotes

Voici les étapes de base pour activer OpenXPS dans un pilote d’impression v4 :

  • Manifeste du pilote : ajoutez « OpenXPS » à la section Rendu du pilote.

  • Manifeste du pilote : ajoutez « oxps » à la section FileSave, le cas échéant.

  • Pipeline de filtre : mettez à jour les filtres d’impression pour gérer les éléments OpenXPS.

Pour un flux donné et avec les interfaces d’objet appropriées, un client peut utiliser le format OpenXPS pour transférer des données vers les filtres du pipeline de filtre d’impression. Pour transférer un flux de données, le client utilise les interfaces IID_IPrintReadStream et IID_IPrintWriteStream. Pour transférer des données vers un composant om, le client utilise les interfaces IID_IXpsDocumentProvider et IID_IXpsDocumentConsumer. Les pilotes qui déclarent la prise en charge d’OpenXPS devront s’assurer que les filtres d’impression fournis peuvent gérer correctement le format OpenXPS lorsque ce format est reçu du gestionnaire de pipeline.

Manifeste du pilote : section DriverRender. Pendant l’installation du pilote, le processus d’installation vérifie la section DriverRender du manifeste pour voir si l’entrée XpsFormat inclut OpenXPS. L’entrée XpsFormat peut inclure XPS (pour Microsoft XPS) et OpenXPS, pour indiquer une prise en charge double. L’ordre dans lequel les deux formats sont répertoriés dans l’entrée XpsFormat détermine le format préféré pour le pilote.

Voici quelques exemples de mise à jour de la section DriverRender.

Indiquant la prise en charge d’OpenXPS uniquement :

[DriverRender]
XpsFormat = OpenXPS

Indiquant la prise en charge de MSXPS uniquement :

[DriverRender]
XpsFormat = XPS

Indiquant la prise en charge des deux formats, avec une préférence pour OpenXPS :

[DriverRender]
XpsFormat = OpenXPS,XPS

Indiquant la prise en charge des deux formats, avec une préférence pour MSXPS :

[DriverRender]
XpsFormat = XPS,OpenXPS

Le développeur de pilotes détermine le format préféré de son pilote d’impression V4, et cette décision est basée sur les fonctionnalités que le pilote a été conçu pour fournir. Par exemple, un pilote d’impression peut être développé pour fournir une prise en charge JPEG XR pour les images haute fidélité.

Le système d’impression prend différentes décisions en fonction des informations DriverRender dans le manifeste. Voici quelques exemples de ces décisions :

  • Travaux d’impression basés sur GDI envoyés aux pilotes v4

    Microsoft XPS Document Converter (MXDC) prend l’entrée de travail d’impression GDI et convertit le travail en fichier de pool XPS. Le format de ce fichier de spouleur correspond au format XPS préféré indiqué dans la section DriverRender du manifeste.

  • Conversion au format de l’API d’impression XPS

    L’API d’impression XPS interroge les formats XPS pris en charge pour le pilote cible. Si le pilote prend en charge les deux formats, l’API d’impression XPS transmet le travail d’impression XPS au spouleur COMME SOUMIS par l’application. Aucune conversion n’est effectuée.

    Si le pilote cible ne prend en charge que l’un ou l’autre format, le travail est converti au format approprié avant la mise en file d’attente.

    Si aucun xpsFormat n’est fourni dans le manifeste, le comportement par défaut est MSXPS uniquement. L’entrée OpenXPS sera convertie en MSXPS. Ce comportement offre la compatibilité descendante la plus forte pour les pilotes.

  • Fichiers XPS envoyés directement au spouleur

    Les fichiers XPS envoyés directement au spouleur sont, par défaut, MSXPS. L’envoi d’OpenXPS directement au spouleur n’est pas pris en charge. Toutefois, .NET avant la version 4.5+ sérialisait son propre MSXPS et soumettait le travail directement au spouleur. Ce comportement a été implémenté avant l’introduction de l’API d’impression XPS (xpsprint.dll).

    Pour assurer la compatibilité descendante pour ces applications .NET, le gestionnaire de pipeline de filtre d’impression case activée le fichier de spouleur pour déterminer s’il a été reçu directement vers le spouleur. Si c’est le cas, il sera supposé être MSXPS. Le gestionnaire de pipeline de filtre d’impression interroge les formats XPS du pilote à ce stade. Si le pilote prend en charge MSXPS, aucune conversion n’est effectuée. Si le pilote prend uniquement en charge OpenXPS, le gestionnaire de pipeline de filtre d’impression effectue une conversion du fichier. À ce stade du travail, la conversion est coûteuse en matière de performances ; Toutefois, cela garantit que les applications .NET héritées seront en mesure d’imprimer sur les nouveaux pilotes OpenXPS v4.

Manifeste du pilote : section FichierEnregistrer. La section FileSave du manifeste du pilote d’impression v4 fournit des extensions pour la boîte de dialogue Enregistrer le fichier utilisée par le port PORTPROMPT:. (PORTPROMPT : doit être utilisé au lieu de FILE : dans Windows 8.1, car PORTPROMPT : permet aux utilisateurs d’accéder à tous les emplacements de fichiers auxquels ils disposent de droits, même lorsque l’application s’exécute en mode de droits faibles.) Les entrées de la section FileSave sont associées aux entrées de la section DriverRender par index.

Exemple :

[FileSave]
xps=0
oxps=0

[DriverRender]
XpsFormat=XPS,OpenXPS

Cela garantit que lorsque l’utilisateur envoie un travail d’impression à ce pilote et que le port est défini sur PORTPROMPT:, la boîte de dialogue Enregistrer le fichier affiche XPS et OpenXPS en tant qu’options de type de fichier dans la boîte de dialogue, et applique respectivement .xps ou .oxps, en tant qu’extension de fichier.

Pour plus d’informations sur les autres options de la section Enregistrement de fichier du manifeste, consultez Manifeste du pilote V4.

Prise en charge des applications pour l’impression OpenXPS

Open XML Paper Specification

Manifeste du pilote V4