共用方式為


篩選管線設定檔

重要

新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。

如需詳細資訊,請參閱 新式列印平臺列印支援應用程式設計指南

篩選 管線組態檔 是定義下列各項的 XML 檔案:

  • 管線中的篩選順序。 此順序是由篩選管線組態檔中的 XML 元素順序所定義。

  • 篩選介面。 這些介面是由篩選管線組態檔中的 XML 屬性所定義。

  • 每個篩選條件的輸入和輸出格式。 這些格式是由篩選管線組態檔中的 XML 元素所定義。

下列程式代碼範例顯示典型的篩選管線組態檔:

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

Private 關鍵詞

XPSDrv 設定模組可以在DrvDocumentEvent函式呼叫期間處理 XPS 驅動程式檔事件時,將私用關鍵詞放在 PrintTicket 專案中。 這些 PrintTicket 項目接著會由列印篩選管線中的處理篩選條件讀取,而篩選條件則會讀取 PrintTicket。

篩選管線屬性包

組態模組也可以使用 篩選管線屬性包 來儲存數據,或將資訊傳遞至篩選管線。 若要使用屬性包公開設定服務,組態模組必須匯出 DrvPopulateFilterServices 方法。 此外,篩選管線組態檔必須包含 <每個服務的 FilterServiceProvider> 元素。 提供者模組必須實作並導出 DllCanUnloadNow 函式。 這些提供者通常會在屬性包中發佈 COM 介面。 當這些介面正在使用時,提供者必須保持載入狀態。

如果服務提供者 dll 無法使用,另一個元素 <OptionalFilterServiceProvider> 可讓管線管理員繼續列印作業。 個別篩選條件必須在沒有選擇性服務提供者的情況下定義其行為。 否則,如果使用 <FilterServiceProvider> 且無法載入 dll,作業就會失敗。 <Windows 7 和更新版本中支援 OptionalFilterServiceProvider> 元素。

下列程式代碼範例顯示 DrvPopulateFilterServices 函式:

HRESULT
DrvPopulateFilterServices(
    __in IPrintPipelinePropertyBag  *pPropertyBag
    );

如需上述函式的詳細資訊,請參閱 DrvPopulateFilterServices

下列程式代碼範例顯示篩選管線組態檔中 FilterServiceProvider 專案的 XML 語法<:>

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

輸出裝置的交錯模式

交錯 是指 XPS 檔的個別資源元件如何與 FixedPage 檔元件一起串流處理。 當篩選管線為管線中具有 XPS 檔介面的第一個篩選建立 XPS 檔物件模型時,不再遵循 XPS 多任務緩衝處理檔案的交錯順序。 不過,使用 XPS 檔介面之管線中的最後一個篩選可以在管線串行化 XPS 內容時,在篩選組態檔中指定交錯順序。 選取與輸出裝置或輸出檔案最相容的交錯順序,可以改善後續文件處理的效能。

下列範例篩選是先前範例篩選組態檔的摘錄,已修改以示範如何使用交錯選項。 雖然此範例會針對圖例顯示這兩個交錯選項,但實際的篩選組態檔在篩選定義中只有一個 <交錯> 專案:

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

篩選管線支援下列交錯順序:

  • ResourcesFirst 交錯順序會在相依於資源的 FixedPage 之前串流每個相依資源。 這種交錯順序適用於印表機驅動程式和直接耗用印表機,因為它提供印表機在轉譯開始前轉譯文字和頁面內容所需的字型和影像資源。

  • MarkupFirst 交錯順序會串流文件文字和標記,以及資源在串流實際資源之前如何使用的資訊。 此交錯順序最適合封存盤案目的地,以及在線檢視檔的應用程式。

封存優化 XPS 輸出

此功能可讓列印驅動程序明確要求封存優化 XPS 輸出做為多任務緩衝處理檔案。 在 Windows 8 中,Microsoft XPS 檔寫入器 v4 (MXDW) 會透過只有MICROSOFT XPS 檔轉換器 (MXDC) 中的 MXDW 代碼路徑產生此封存就緒 XPS 輸出。 因此,列印驅動程式可以從 MXDC 產生此封存優化的 XPS。

下列程式代碼範例示範在篩選管線組態檔中使用 <Archive> 元素來啟用這項功能的 XML 語法:

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