共用方式為


列印票證合併

重要

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

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

Print Driver 中處理的 PrintTicket 對象會根據它們相關聯的檔元件,具有階層式關聯性。 下圖說明 XPS 檔內這些元件的關聯性。

說明 xps 檔中檔部分的圖表。

階層中的每個列印票證層級都有不同的範圍。 使用列印票證資訊的列印驅動程式篩選模組必須維護該範圍,因為列印票證對像是從文件數據流讀取。 下圖說明如何在列印驅動程式篩選模組中完成此作業。

圖表說明如何以邏輯方式合併不同的列印票證層級。

當檔元件由篩選讀取時,會讀取、合併和驗證列印票證物件,並由篩選條件快取,以設定篩選將如何處理每個檔元件。 上圖說明如何以邏輯方式合併不同的列印票證層級,而下列虛擬程式碼說明如何實作此合併。

class Filter
{
 PrintTicket Saved_FDS_PT;
 PrintTicket Saved_FD_PT;

 ProcessFDS(pIFixedDocumentSequence)
    {
 Saved_FDS_PT = pIFixedDocumentSequence->GetPrintTicket();

        // continue processing the FixedDocumentSequence part
    }

 ProcessFD(pIFixedDocument)
    {
 Saved_FD_PT->Release();

        temp = pIFixedDocument->GetPrintTicket();

 Saved_FD_PT = PrintTicketMergeAndValidate(
 Saved_FDS_PT, temp);

        // continue processing the FixedDocument part
    }

 ProcessPage(IFixedPage)
    {
        temp = pIFixedPage->GetPrintTicket();

 PagePT = PrintTicketMergeAndValidate(Saved_FD_PT, temp);

        // continue processing the FixedPage part
    }

 PrintTicket PrintTicketMergeAndValidate(
 ParentPT,
 PartPT)
    {
        // Entries in the Part PrintTicket 
        // take precedence over the corresponding entries 
        // in the Parent PrintTicket
    }
};