Condividi tramite


File di configurazione della pipeline filtro

Importante

La piattaforma di stampa moderna è il mezzo preferito di Windows per comunicare con le stampanti. Ti consigliamo di 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 per stampanti.

Per altre informazioni, vedere Piattaforma di stampa moderna e guida alla progettazione dell'app di supporto per la 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.

L'esempio di codice seguente mostra un tipico file di configurazione della pipeline di filtro:

<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 di filtro di stampa mentre i filtri leggono PrintTicket.

Contenitore delle proprietà della pipeline filtro

Un modulo di configurazione può anche usare il contenitore delle proprietà della pipeline di filtro per archiviare i dati o per passare informazioni a una pipeline di filtro. Per esporre i servizi di configurazione tramite 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 proprio comportamento in assenza del provider di servizi facoltativo. In caso contrario, se <viene usato FilterServiceProvider> e la dll non può essere caricata, il processo ha esito negativo. L'elemento <OptionalFilterServiceProvider> è supportato in Windows 7 e versioni successive.

L'esempio di codice seguente illustra 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

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 di documento XPS nella pipeline, l'ordine di interleaving del file di spooling 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 da usare per la pipeline quando serializza il contenuto XPS. La selezione dell'ordine di interleaving più compatibile con un dispositivo di output o un file di output può migliorare le prestazioni dell'elaborazione successiva dei documenti.

Il filtro di esempio seguente è un estratto del file di configurazione del filtro di esempio precedente modificato per mostrare come usare l'opzione di interleaving. Sebbene questo esempio mostri entrambe le opzioni di interleaving allo 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:

  • L'ordine di interleaving ResourcesFirst trasmette 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 tipo carattere e immagine necessarie alla stampante per eseguire il rendering del contenuto di testo e pagina appena prima dell'inizio del rendering.

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

Output XPS ottimizzato per l'archivio

Questa funzionalità consente ai driver di stampa di richiedere in modo esplicito l'output XPS ottimizzato per l'archivio come file di spooling. In Windows 8, Microsoft XPS Document Writer v4 (MXDW) produce questo output XPS pronto per l'archivio tramite un percorso di codice disponibile solo per MXDW in Microsoft XPS Document Converter (MXDC). Pertanto, 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>