Partager via


Mise en œuvre des filtres XPS

Important

La plateforme d’impression moderne est le moyen privilégié de Windows pour communiquer avec les imprimantes. Nous vous recommandons d’utiliser le pilote de classe IPP en boîte 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 de périphériques d’impression.

Pour plus d’informations, veuillez consulter la section Plateforme d’impression moderne et le Guide de conception des applications de support d’impression.

Tous les filtres XPS doivent implémenter l’interface IPrintPipelineFilter.

Lors de l’appel à la méthode IPrintPipelineFilter::InitializeFilter, un filtre doit :

  1. Mettre en cache le pointeur vers l’interface IPrintPipelineManagerControl.

  2. Traiter les données pertinentes dans l’interface IPrintPipelinePropertyBag.

  3. Appeler les méthodes IInterFilterCommunicator::RequestReader et IInterFilterCommunicator::RequestWriter de l’interface IInterfilterCommunicator (pIInterFilterCom) pour initialiser les interfaces fournisseur et consommateur pour le filtre.

Si les données contiennent une section PrintTicket, vous pouvez y accéder via l’API Microsoft Win32 PrintTicket ou PrintCapabilities. Pour les pilotes UniDrv et PScript5 basés sur XPSDrv, les filtres peuvent accéder à l’interface IPrintCoreHelper du pilote de base Unidrv ou PScript5 en tant que service de configuration.

Les filtres peuvent également accéder aux données de configuration propriétaires via le conteneur de propriétés, selon la conception du pilote.

L’inter-communicateur de filtres est la partie du gestionnaire de pipeline de filtres qui gère la communication entre les filtres dans le pipeline de filtres. Lorsque le gestionnaire de pipeline de filtres initialise un filtre, une interface d’inter-communicateur de filtres (IInterFilterCommunicator) est passée au filtre afin que celui-ci puisse obtenir les interfaces de lecture et d’écriture définies pour ce filtre.

Microsoft fournit les interfaces de document et de flux XPS, mais vous pouvez créer vos propres interfaces d’inter-filtre définies pour ce filtre. Microsoft fournit les interfaces suivantes :

  • L’interface de document XPS lit et écrit depuis différentes parties d’un fichier de mise en file XPS.

  • L’interface de flux XPS lit et écrit un flux de données en série. Vous pouvez utiliser cette interface pour écrire le langage de description de page (PDL) à partir d’un filtre vers une imprimante qui n’utilise pas XPS comme PDL.

Les filtres doivent se conformer aux règles de rendu et aux règles de traitement des PrintTicket définies dans la spécification XML Paper (XPS).

Les filtres ne doivent pas dépendre du Microsoft .NET Common Language Runtime (CLR) ou des composants Microsoft WinFX Runtime.

Les filtres du pipeline ne doivent pas afficher de contenu d’interface utilisateur.

Les recommandations suivantes s’appliquent aux filtres :

  • Les filtres ne doivent pas créer de processus ou de threads distincts. Si un processus ou un thread distinct est nécessaire, le filtre doit gérer correctement la durée de vie du processus ou du thread.

  • Les filtres doivent avoir une fonctionnalité isolée. Toute fonctionnalité et mise en œuvre doit être modulaire. Éliminez autant que possible les dépendances d’ordre et de fonctionnalité entre les filtres.

  • Les filtres doivent gérer le cas où ils sont placés dans le pipeline dans un ordre incorrect. Lorsqu’un filtre n’est pas dans l’ordre attendu, il ne doit pas se bloquer et doit gérer la situation de manière appropriée. Si un filtre dépend d’un autre filtre, il doit gérer la situation de manière appropriée si la dépendance n’est pas fournie.

Pour plus d’informations sur l’ajout de notifications asynchrones à votre filtre, veuillez consulter la section Notifications asynchrones dans les filtres d’impression.