Filtres d’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.
Pour le chemin d'impression XPS, les filtres sont le principal moyen par lequel un pilote prépare les données d'impression pour l'imprimante. Dans les versions du système d'exploitation Microsoft Windows antérieures à Windows Vista, les processeurs d'impression et les modules de rendu faisaient le travail des filtres.
Un filtre XPS est une DLL qui exporte les fonctions DllGetClassObject et DllCanUnloadNow. Le gestionnaire du pipeline de filtres appelle ces fonctions lorsqu'il charge et décharge la DLL de filtre XPS. Après avoir chargé la DLL de filtrage, le gestionnaire du pipeline de filtrage effectue les opérations suivantes :
Appelle DllGetClassObject pour obtenir une référence à l'interface IClassFactory de l'objet filtre.
Appelle la méthode IClassFactory::CreateInstance pour obtenir une référence à l'interface IPrintPipelineFilter de l'objet filtre.
Appelle la méthode IPrintPipelineFilter::InitializeFilter pour initialiser l'objet filtre.
Avant de décharger la DLL de filtrage, le gestionnaire du pipeline de filtrage appelle DllCanUnloadNow.
Dans certains filtres XPS plus anciens, la fonction DllGetClassObject récupère une référence à l'interface IPrintPipelineFilter du filtre au lieu d'une interface IClassFactory. Pour des raisons de compatibilité ascendante, le gestionnaire de pipeline de filtres de Windows Vista et des versions ultérieures de Windows continuera à prendre en charge ces filtres. Toutefois, pour les nouveaux filtres, DllGetClassObject doit récupérer une référence à une interface IClassFactory.
Les filtres XPS rendent le sous-système d'impression plus robuste, car ils s'exécutent dans un processus différent du spouleur. Ce « sandboxing » protège contre les défaillances et permet à un plug-in de s'exécuter avec différentes permissions de sécurité. XPSDrv vous permet également de réutiliser les filtres dans plusieurs familles d'imprimantes afin de réduire les coûts et le temps de développement.
Pour une flexibilité et une réutilisation maximales, chaque filtre doit exécuter une fonction de traitement d'impression spécifique. Par exemple, un filtre n'appliquera qu'un filigrane, tandis qu'un autre ne s'occupera que de la comptabilité.
Pour plus d'informations sur le gestionnaire du pipeline de filtrage, voir le module de rendu XPSDrv.
Pour plus d'informations sur la mise en œuvre des filtres, reportez-vous à la section Mise en œuvre des filtres XPS.
Pour plus d'informations sur les notifications asynchrones dans les filtres d'impression, voir Notifications asynchrones dans les filtres d'impression.
Vous devez configurer les filtres à l'aide du fichier de configuration du pipeline de filtres.
Pour plus d'informations sur la manière de déboguer le service de pipeline de filtrage d'impression, voir Attacher un débogueur au service de pipeline de filtrage d'impression.
Dans Windows 7, les filtres XPS peuvent utiliser le service de tramage XPS pour convertir les pages fixes des documents XPS en images bitmap.
Pour plus d'informations sur la manière dont Windows utilise l'accélération GPU pour le tramage XPS, consultez l'arbre de décision de l'utilisation du GPU pour XPSRas.