File di configurazione della pipeline filtro

Importante

È consigliabile usare il driver di classe IPP di Microsoft, insieme a Print Support Apps (PSA), per personalizzare l'esperienza di stampa in Windows 10 e 11 per lo sviluppo di dispositivi stampanti.

Per altre informazioni, vedere la guida alla progettazione dell'app di supporto stampa.

Il file di configurazione della pipeline di filtro è un file XML che definisce quanto segue:

  • Ordine dei filtri nella pipeline. Questo ordine viene definito dall'ordinamento degli elementi XML nel file di configurazione della pipeline di filtro.

  • Interfacce di filtro. Queste interfacce sono definite dagli attributi XML nel file di configurazione della pipeline di filtro.

  • Formati di input e output per ogni filtro. Questi formati sono definiti dagli elementi XML nel file di configurazione della pipeline di filtro.

Nell'esempio di codice seguente viene illustrato un file di configurazione della pipeline di filtro tipico:

<Filters>
    <Filter      dll="XDWMark.dll"
 clsid="{D647D658-BEF6-415f-AFAC-070D64074C5D}"
                name="Watermark filter">
        <Input  guid="{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment="IID_IXpsDocumentProvider"/>
        <Output guid="{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment="IID_IXpsDocumentConsumer"/>
    </Filter>
 <Filter dll="XDScale.dll"
 clsid="{B9B52406-92D3-4721-86E6-3CF78F6D5FC5}"
 name="Page Scaling filter">
 <Input guid="{4d47a67c-66cc-4430-850e-daf466fe5bc4}" comment="IID_IPrintReadStream"/>
 <Output guid="{65bb7f1b-371e-4571-8ac7-912f510c1a38}" comment="IID_IPrintWriteStream"/>
 </Filter>
    <Filter      dll="XDColMan.dll"
 clsid="{8E56FC37-0799-447e-A643-16F4FB18244C}"
 name="Colour Management filter">
         <Input guid="{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment="IID_IXpsDocumentProvider"/>
        <Output guid="{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment="IID_IXpsDocumentConsumer"/>
    </Filter>
    <Filter      dll="XDBook.dll"
 clsid="{7DFC96C6-CEA2-46d8-B354-887C47B7986D}"
                name="Booklet filter">
         <Input guid="{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment="IID_IXpsDocumentProvider"/>
        <Output guid="{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment="IID_IXpsDocumentConsumer"/>
    </Filter>
    <Filter      dll="XDNUp.dll"
 clsid="{1b5bee16-511c-440f-8017-2123f481091a}"
                name="NUp filter">
         <Input guid="{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment="IID_IXpsDocumentProvider"/>
        <Output guid="{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment="IID_IXpsDocumentConsumer"/>
    </Filter>
</Filters>

Parole chiave private

Un modulo di configurazione XPSDrv può inserire parole chiave private nella voce PrintTicket quando gestisce un evento di documento del driver XPS durante una chiamata di funzione DrvDocumentEvent . Queste voci PrintTicket vengono quindi lette dai filtri di elaborazione nella pipeline del filtro di stampa mentre i filtri stanno leggendo PrintTicket.

Filtro della proprietà Pipeline

Un modulo di configurazione può anche usare il contenitore delle proprietà della pipeline di filtro per archiviare i dati o passare informazioni a una pipeline di filtro. Per esporre i servizi di configurazione usando il contenitore delle proprietà, il modulo di configurazione deve esportare il metodo DrvPopulateFilterServices . Inoltre, il file di configurazione della pipeline di filtro deve includere l'elemento <FilterServiceProvider> per ogni servizio. Il modulo del provider deve implementare ed esportare la funzione DllCanUnloadNow . In genere, questi provider pubblicano interfacce COM nel contenitore delle proprietà. Il provider deve rimanere caricato mentre queste interfacce sono in uso.

Un altro elemento,< OptionalFilterServiceProvider>, consente alla gestione pipeline di continuare il processo di stampa se la dll del provider di servizi non è disponibile. I singoli filtri devono definire il loro comportamento in assenza del provider di servizi facoltativo. In caso contrario, se <FilterServiceProvider> viene usato e la dll non può essere caricata, il processo non riesce. L'elemento <OptionalFilterServiceProvider> è supportato in Windows 7 e versioni successive.

Nell'esempio di codice seguente viene illustrata la funzione DrvPopulateFilterServices :

HRESULT
DrvPopulateFilterServices(
    __in IPrintPipelinePropertyBag  *pPropertyBag
    );

Per altre informazioni sulla funzione precedente, vedere DrvPopulateFilterServices.

Nell'esempio di codice seguente viene illustrata la sintassi XML per l'elemento <FilterServiceProvider> nel file di configurazione della pipeline di filtro:

<Filters>
    <Filter ... />
    <FilterServiceProvider dll = "providerA.dll"/>
    <FilterServiceProvider dll = "providerB.dll"/>
</Filters>

Modalità interleaving per il dispositivo di output

L'interleaving si riferisce al modo in cui le singole parti di risorsa di un documento XPS vengono trasmessi insieme alle parti del documento FixedPage. Quando la pipeline di filtro crea il modello a oggetti documento XPS per il primo filtro con interfacce documento XPS nella pipeline, l'ordine interleaving del file spool XPS non viene più seguito. Tuttavia, l'ultimo filtro nella pipeline che usa l'interfaccia del documento XPS può specificare un ordine di interleaving nel file di configurazione del filtro per la pipeline da usare quando serializza il contenuto XPS. Se si seleziona l'ordine di interleaving più compatibile con un dispositivo di output o un file di output, è possibile migliorare le prestazioni dell'elaborazione successiva del documento.

Il filtro di esempio seguente è un estratto dal file di configurazione del filtro di esempio precedente che è stato modificato per mostrare come usare l'opzione di interleaving. Anche se questo esempio mostra entrambe le opzioni di interleaving per lo scopo dell'illustrazione, un file di configurazione del filtro reale ha un <solo elemento Interleaving> nella definizione del filtro:

    <Filter     dll="XDNUp.dll"
      clsid="{1b5bee16-511c-440f-8017-2123f481091a}"
        name="NUp filter">
      <Input guid="{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment="IID_IXpsDocumentProvider"/>
       <Output guid="{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment="IID_IXpsDocumentConsumer"/>
     <Interleaving mode="ResourcesFirst"\>
     <Interleaving mode="MarkupFirst"\>
    </Filter>

La pipeline di filtro supporta gli ordini di interleaving seguenti:

  • ResourcesFirst interleaving order stream ogni risorsa dipendente prima di FixedPage che dipende dalla risorsa. Questo ordine di interleaving è valido per i driver della stampante e per le stampanti a consumo diretto perché fornisce le risorse di carattere e immagine necessarie per la stampante per eseguire il rendering del testo e del contenuto della pagina appena prima dell'inizio del rendering.

  • MarkupFirst interleaving order trasmette il testo e il markup del documento e le informazioni su come verrà usata una risorsa prima di trasmettere la risorsa effettiva. Questo ordine di interleaving è migliore per le destinazioni dei file di archiviazione e per le applicazioni che visualizzano il documento online.

output Archive-Optimized XPS

Questa funzionalità consente ai driver di stampa di richiedere in modo esplicito l'output XPS ottimizzato per l'archivio come file di spool. In Windows 8, Microsoft XPS Document Writer v4 (MXDW) produce questo output XPS pronto per l'archiviazione tramite un percorso di codice disponibile solo per MXDW nel Microsoft XPS Document Converter (MXDC). Quindi un driver di stampa può generare questo XPS ottimizzato per l'archivio da MXDC.

Nell'esempio di codice seguente viene illustrata la sintassi XML per l'uso dell'elemento <Archive> nel file di configurazione della pipeline di filtro per abilitare questa funzionalità:

<Filters>
    ...
    <Archive enabled="true"/>
</Filters>