實作 XPS 篩選
重要
新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。
如需詳細資訊,請參閱 新式列印平臺 和 列印支援應用程式設計指南。
所有 XPS 篩選器都必須實作 IPrintPipelineFilter 介面。
在呼叫 IPrintPipelineFilter::InitializeFilter 方法期間,篩選應該:
快取 IPrintPipelineManagerControl 介面的指標。
在 IPrintPipelinePropertyBag 介面中處理相關數據。
呼叫 IInterFilterCommunicator::RequestReader 和 IInterFilterCommunicator::RequestWriter 方法的 IInterfilterCommunicator 介面 (pIInterFilterCom) 來初始化篩選的提供者和取用者介面。
如果數據包含 PrintTicket 區段,您可以透過 Microsoft Win32 PrintTicket 或 PrintCapabilities API 來存取數據。 針對以 XPSDrv 為基礎的 UniDrv 和 PScript5 驅動程式,篩選條件可以存取 IPrintCoreHelper 介面核心 Unidrv 或 PScript5 驅動程式作為其設定服務。
根據驅動程式設計,篩選也可以透過屬性包存取專屬設定數據。
Inter-Filter Communicator 是篩選管線管理員的一部分,可處理篩選管線中篩選條件之間的通訊。 當篩選管線管理員初始化篩選條件時,會將 Inter-Filter Communicator 介面 (IInterFilterCommunicator) 傳遞至篩選,讓篩選可以取得針對該篩選定義的讀取和寫入介面。
Microsoft提供 XPS 檔和數據流介面,但您可以建立自己針對該篩選定義的跨篩選介面。 Microsoft提供下列介面:
XPS 檔介面會從 XPS 多任務緩衝處理檔案的不同部分讀取和寫入。
XPS 數據流介面會讀取和寫入數據流。 您可以使用這個介面,將頁面描述語言 (PDL) 從篩選寫入到不使用 XPS 做為 PDL 的印表機。
篩選條件必須符合 XML 紙張規格 (XPS) 中所定義的轉譯規則和 PrintTicket 處理規則。
篩選不得相依於 Microsoft .NET Common Language Runtime (CLR) 或 Microsoft WinFX 運行時間元件。
管線中的篩選不得顯示使用者介面內容。
下列建議適用於篩選:
篩選不應該建立個別的進程或線程。 如果需要個別的進程或線程,篩選條件必須正確管理進程或線程存留期。
篩選條件應該具有隔離的功能。 所有功能和實作都應該是模組化的。 盡可能消除篩選之間的任何順序和功能相依性。
篩選條件應該處理它們依序放入管線的情況。 當篩選不符合預期的順序時,它不應該當機,而且應該正常處理情況。 如果篩選相依於另一個篩選條件,則如果未提供相依性,則應該正常處理情況。
如需將異步通知新增至篩選的詳細資訊,請參閱 列印篩選中的異步通知。