列印票證合併
重要
新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。
如需詳細資訊,請參閱 新式列印平臺 和 列印支援應用程式設計指南。
Print Driver 中處理的 PrintTicket 對象會根據它們相關聯的檔元件,具有階層式關聯性。 下圖說明 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
}
};