Filtros de XPS
Importante
A plataforma de impressão moderna é o meio preferido do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.
Para obter mais informações, consulte Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.
Para o caminho de impressão XPS, os filtros são a principal maneira pela qual um driver prepara dados de impressão para a impressora. Nas versões do sistema operacional Microsoft Windows anteriores ao Windows Vista, os processadores de impressão e os módulos de renderização faziam o trabalho de filtros.
Um filtro XPS é uma DLL que exporta as funções DllGetClassObject e DllCanUnloadNow. O gerenciador de pipeline de filtro chama essas funções quando carrega e descarrega a DLL do filtro XPS. Depois de carregar a DLL do filtro, o gerenciador de pipeline de filtro faz o seguinte:
Chama DllGetClassObject para obter uma referência à interface IClassFactory do objeto de filtro.
Chama o método IClassFactory::CreateInstance para obter uma referência à interface IPrintPipelineFilter do objeto de filtro.
Chama o método IPrintPipelineFilter::InitializeFilter para inicializar o objeto de filtro.
Antes de descarregar a DLL do filtro, o gerenciador de pipeline de filtro chama DllCanUnloadNow.
Em alguns filtros XPS mais antigos, a função DllGetClassObject recupera uma referência à interface IPrintPipelineFilter do filtro em vez de a uma interface IClassFactory. Para compatibilidade com versões anteriores, o gerenciador de pipeline de filtro no Windows Vista e versões posteriores do Windows continuará a dar suporte a esses filtros. No entanto, para novos designs de filtro, DllGetClassObject deve recuperar uma referência a uma interface IClassFactory.
Os filtros XPS tornam o subsistema de impressão mais robusto, pois os filtros são executados em um processo diferente do spooler. Esse "sandboxing" protege contra falhas e permite que um plug-in seja executado com diferentes permissões de segurança. O XPSDrv também permite que você reutilize filtros em famílias de impressoras para reduzir custos e tempo de desenvolvimento.
Para máxima flexibilidade e reutilização, cada filtro deve executar uma função específica de processamento de impressão. Por exemplo, um filtro aplicaria apenas uma marca d'água, enquanto outro executaria apenas a contabilidade.
Para obter mais informações sobre o gerenciador de pipeline de filtro, consulte Módulo de renderização XPSDrv.
Para obter mais informações sobre como implementar filtros, consulte Implementando filtros XPS.
Para obter mais informações sobre notificações assíncronas em filtros de impressão, consulte Notificações assíncronas em filtros de impressão.
Você deve configurar filtros usando o arquivo de configuração do pipeline de filtro.
Para obter informações sobre como depurar o serviço de pipeline de filtro de impressão, consulte Anexando um depurador ao serviço de pipeline de filtro de impressão .
No Windows 7, os filtros XPS podem usar o serviço de rasterização XPS para converter páginas fixas em documentos XPS em bitmaps.
Para obter informações sobre como Windows usa a aceleração de GPU para rasterização XPS, consulte Árvore de decisão de uso de GPU XPSRas.