Dela via


Filterpipelinekonfigurationsfil

Viktig

Den moderna utskriftsplattformen är Windows bästa sätt att kommunicera med skrivare. Vi rekommenderar att du använder Microsofts IPP-drivrutin för inkorgsklass tillsammans med Print Support Apps (PSA) för att anpassa utskriftsupplevelsen i Windows 10 och 11 för enhetsutveckling av skrivare.

Mer information finns i designguiden för utskriftssupportapp v1 och v2.

Konfigurationsfilen filterpipeline är en XML-fil som definierar följande:

  • Ordningen av filter i pipelinen. Den här ordningen definieras av ordningen på XML-elementen i filterpipelinekonfigurationsfilen.

  • Filtergränssnitt. Dessa gränssnitt definieras av XML-attribut i filterpipelinekonfigurationsfilen.

  • Indata- och utdataformat för varje filter. Dessa format definieras av XML-element i filterpipelinens konfigurationsfil.

I följande kodexempel visas en typisk konfigurationsfil för filterpipeline:

<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>

Privata nyckelord

En XPSDrv-konfigurationsmodul kan placera privata nyckelord i posten PrintTicket när den hanterar en XPS-drivrutinsdokumenthändelse under ett DrvDocumentEvent funktionsanrop. Dessa PrintTicket-poster läses sedan av bearbetningsfiltren i utskriftsfilterpipelinjen medan filtren läser PrintTicket.

Egenskapsväska för filterpipeline

En konfigurationsmodul kan också använda filterpipeline-egenskapspaket för att lagra data eller för att överföra information till en filterpipeline. Om du vill exponera konfigurationstjänster med hjälp av egenskapsuppsättningen måste konfigurationsmodulen exportera metoden DrvPopulateFilterServices. Dessutom måste konfigurationsfilen för filterpipelinen innehålla elementet <FilterServiceProvider> för varje tjänst. Providermodulen måste implementera och exportera funktionen DllCanUnloadNow. Dessa leverantörer publicerar vanligtvis COM-gränssnitt i egenskapspåsen. Providern måste vara inläst medan dessa gränssnitt används.

Ett annat element, <OptionalFilterServiceProvider>, gör att pipelinehanteraren kan fortsätta utskriftsjobbet om tjänstleverantörens dll inte är tillgänglig. De enskilda filtren måste definiera sitt beteende i avsaknad av den valfria tjänstleverantören. Annars misslyckas jobbet om <FilterServiceProvider> används och dll-filen inte kan läsas in. Elementet <OptionalFilterServiceProvider> stöds i Windows 7 och senare.

I följande kodexempel visas funktionen DrvPopulateFilterServices:

HRESULT
DrvPopulateFilterServices(
    __in IPrintPipelinePropertyBag  *pPropertyBag
    );

Mer information om föregående funktion finns i DrvPopulateFilterServices.

Följande kodexempel visar XML-syntaxen för elementet <FilterServiceProvider> i filterpipelinekonfigurationsfilen:

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

Mellanlagringsläge för utdataenheten

Interleaving- refererar till hur de enskilda resursdelarna i ett XPS-dokument strömmas tillsammans med FixedPage-dokumentdelarna. När filterpipelinen skapar XPS-dokumentobjektmodellen för det första filtret med XPS-dokumentgränssnitt i pipelinen följer man inte längre interfolieringsordningen för XPS-spoolfilen. Men det sista filtret i pipelinen som använder XPS-dokumentgränssnittet kan ange en mellanlagringsordning i filterkonfigurationsfilen som pipelinen ska använda när xps-innehållet serialiseras. Om du väljer den interfolieringsordning som är mest kompatibel med en utdataenhet eller en utdatafil kan du förbättra prestandan för efterföljande dokumentbearbetning.

Följande exempelfilter är ett utdrag från föregående exempelfil för filterkonfiguration som har ändrats för att visa hur du använder interleaving-alternativet. Även om det här exemplet visar båda alternativen för interleaving för illustrationssyfte, har en verklig filterkonfigurationsfil bara ett <Interleaving>-element i filterdefinitionen:

    <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>

Filterpipelinen stöder följande mellanlagringsbeställningar:

  • ResourcesFirst mellanlagringsordning strömmar varje beroende resurs före FixedPage som är beroende av resursen. Den här mellanlagringsordningen är bra för skrivardrivrutiner och för direktförbrukningsskrivare eftersom den tillhandahåller de teckensnitts- och bildresurser som skrivaren behöver för att återge text- och sidinnehållet precis innan renderingen börjar.

  • MarkupFirst- mellanlagringsordning strömmar dokumenttexten och markeringen och informationen om hur en resurs ska användas innan den strömmar den faktiska resursen. Den här mellanlagringsordningen passar bäst för arkivfilmål och för program som visar dokumentet online.

Archive-Optimized XPS-utdata

Med den här funktionen kan utskriftsdrivrutiner uttryckligen begära arkivoptimerade XPS-utdata som en poolfil. I Windows 8 genererar Microsoft XPS Document Writer v4 (MXDW) dessa arkivklara XPS-utdata via en kodsökväg som endast är tillgänglig för MXDW i Microsoft XPS Document Converter (MXDC). Så en utskriftsdrivrutin kan generera det här arkivoptimerade XPS från MXDC.

I följande kodexempel visas XML-syntaxen för att använda elementet <Arkivera> i filterpipelinekonfigurationsfilen för att aktivera den här funktionen:

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