適用於 Windows Vista 的新根層級專用 PPD 屬性
重要
新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。
如需詳細資訊,請參閱 新式列印平臺 和 列印支援應用程式設計指南。
下列清單描述從 Windows Vista 開始的新 PPD 屬性。 若要維持與 Windows Vista 前版本的 Windows 回溯相容性,您應該使用下列程式代碼括住這些屬性。
*Ifdef: WINNT_60 ... *Endif: WINNT_60 blocks
MSPrintSchemaKeywordMap
MSPrintSchemaKeywordMap 屬性會定義從 PPD 功能關鍵詞到公用列印架構功能關鍵詞的對應,或從 PPD 功能的 PPD 選項關鍵詞對應到列印架構功能的公用列印架構選項關鍵詞。
MSPrintSchemaKeywordMap 有兩種可接受的格式:
*MSPrintSchemaKeywordMap: PrintSchema_feature_keyword *<PPD_feature_keyword>
*MSPrintSchemaKeywordMap: PrintSchema_feature_keyword PrintSchema_option_keyword *<PPD_feature_keyword> <PPD_option_keyword>
這兩種格式都需要PPD功能關鍵詞前置詞(這是星號[*])。
針對格式 1:
PPD 功能關鍵詞必須參考先前 PPD 檔案內容中已定義的 PPD 功能。
不允許對相同 PPD 功能的 *MSPrintSchemaKeywordMap 進行多個定義。 如果找到多個定義,則只會接受第一個定義,並忽略其他定義。
針對格式 2:
PPD 功能之 *MSPrintSchemaKeywordMap 定義(使用格式 1)必須存在,才能顯示PPD功能選項的任何 *MSPrintSchemaKeywordMap 定義。
在PPD選項的 *MSPrintSchemaKeywordMap 定義中,PPD 功能關鍵詞與列印架構功能關鍵詞的對應必須與先前針對PPD功能定義的 *MSPrintSchemaKeywordMap 定義中所定義的內容相同(使用格式 1)。
PPD 選項關鍵詞必須參考先前 PPD 檔案內容中已定義的 PPD 功能選項。
不允許針對PPD功能的相同PPD選項使用 *MSPrintSchemaKeywordMap 的多個定義。 如果找到多個定義,則只會接受第一個定義,並忽略其他定義。
如果 *MSPrintSchemaKeywordMap 項目違反上述任何格式規則,則會忽略該專案,而且您將會收到含有詳細資訊的 ppdchecker 警告。
*MSPrintSchemaKeywordMap 不支援搭配下列標準 PPD 功能使用:
*Collate *Duplex *InputSlot *OutputBin *PageSize *Resolution *MediaType 也請務必知道,如果您將功能對應至已在 PPD 檔案中使用的列印架構關鍵詞,對應的 PrintCapabilities 檔可能會列出該功能一次以上。 多次發生可能會造成混淆,因此您不應該將功能對應至PPD檔案中使用的列印架構關鍵詞。
PPD 剖析器會自動產生 InputBin 功能的 FORMSOURCE 選項,並將其對應至列印架構中的 AutoSelect 關鍵詞。 如果您的PPD檔案包含使用 MSPrintSchemaKeywordMap 屬性將選項對應至 Print Schema 關鍵詞的 InputBin 選項,則列印架構中的功能會在裝置命名空間中包含 FORMSOURCE 選項。 AutoSelect 會出現在 PrintCapabilities 檔中,並參考 PPD 檔案之 MSPrintSchemaKeywordMap 屬性中指定的選項。
下列程式代碼範例顯示部分PPD檔案中的 MSPrintSchemaKeywordMap 屬性範例。
*OpenUI *IHVStapling:PickOne
*DefaultIHVStapling:Disabled
*IHVStapling Enabled:"..."
*IHVStapling Disabled:"..."
*CloseUI: *IHVStapling
*MSPrintSchemaKeywordMap: Staple*IHVStapling
*MSPrintSchemaKeywordMap: StapleOn*IHVStaplingEnabled
*MSPrintSchemaKeywordMap: StapleOff*IHVStaplingDisabled
MSPrintSchemaPrivateNamespaceURI
MsPrintSchemaPrivateNamespaceURI 屬性會定義核心驅動程式應該用來公開 PrintTicket 或 PrintCapabilities 中私人 PPD 功能或選項的私人命名空間 URI。 此 URI 會套用至沒有明確對應的任何功能或選項(使用 *MSPrintSchemaKeywordMap 定義)到公用列印架構。
MSPrintSchemaPrivateNamespaceURI 使用下列格式。
*MSPPrintSchemaPrivateNamespaceURI: "<URI>"
<URI> 代表 PPD QuotedValue。 如 PPD 規格所定義,QuotedValue 允許常值 ASCII 子字串和十六進位子字串。
單一印表機模型的PPD檔案(或檔案)應該只有一個 *MSPrintSchemaPrivateNamespaceURI 的定義。 如果找到多個定義,則只會接受第一個定義,並忽略其他定義。
下列程式代碼範例顯示部分 PPD 檔案中 MsPrintSchemaPrivateNamespaceURI 屬性的範例。
*MSPrivateNamespaceURI: "https://www.ihv.com/schema/2004"
MSIsXPSDriver
MSIsXPSDriver 屬性會使用下列格式。
*MSIsXPSDriver: True | False
您可以針對 Microsoft Win32 GDI 驅動程式和新 XPSDrv 驅動程式,使用 Windows Vista PScript5 驅動程式組態模組 (Ps5ui.dll)。 若要使用 XPSDrv 驅動程式的 PScript5 驅動程式組態模組,XPSDrv 驅動程式的 PPD 數據文件必須指定 MSIsXPSDriver ,並將其值設定為 True。
下列程式代碼範例示範部分 PPD 檔案中此屬性的範例:
*MSIsXPSDriver: True
若要使用 Win32 GDI 驅動程式的 PScript5 驅動程式組態模組,您不需要指定這個 PPD 屬性。
MSPrintProcDuplexOptions
MSPrintProcDuplexOptions 屬性會使用下列格式。
*MSPrintProcDuplexOptions: "int"
此屬性可以有下列其中一個值:
1:反向雙工的反向頁面
2:盡可能抑制產生額外的空白頁面
3:上述兩者
0:上述無
下列程式代碼範例顯示部分PPD檔案中的 MSPrintProcDuplexOptions 範例。
*MSPrintProcDuplexOptions: "2"
此屬性控制列印處理器中的各種雙工選項。
如果 MSPrintProcDuplexOptions 為 1,它會控制列印處理器是否應該反轉雙工上的頁面。
假設您必須使用 n-up = 1 列印四頁檔,而且您想要使用反向列印和雙面列印。 因為您想要反向列印,因此您想要在第一頁之前列印最後一頁。 因為您想要雙面列印,因此您想要在單張紙上列印兩頁。 列印處理器可以播放下列兩種格式之一的頁面(其中每對數位都表示將在單張紙張兩側列印的兩頁):
格式 1: (4,3),(2,1)
格式 2: (3,4),(1,2)
在 Windows Vista 之前,列印處理器會以 2 格式列印頁面 [(3,4),(1,2)]。 但在 Windows Vista 和更新版本中,預設格式為 1 [(4,3),(2,1)]。 之所以發生這項變更,是因為許多印表機的格式為 2 有不正確的輸出;也就是說,列印的頁面不會以適當的順序排序。
如果您的印表機與格式 1 正常運作,您就不需要變更 Windows Vista 和更新版本的任何專案。 不過,如果您的印表機使用格式 1 不正確,而且您想要還原為格式 2,請新增值為 1 的 MSPrintProcDuplexOptions 屬性。
*MSPrintProcDuplexOptions: "1"
針對 Windows Vista PScript 驅動程式,如果您有 Windows Vista 前置列印處理器,格式 2 是預設值,而且您無法變更行為;否則,如果您有 Windows Vista 列印處理器,格式 1 是預設值,而且您無法變更行為。
針對 Windows Vista PScript 驅動程式。 如果您有 Windows Vista 前置列印處理器,格式 2 是預設值,而且會忽略 PPD 屬性;否則,如果您有 Windows Vista 列印處理器,格式 1 是預設值,但您可以使用 MSPrintProcDuplexOptions 屬性來變更格式。
如果 MSPrintProcDuplexOptions 為 2,列印處理器將會在特定雙工案例中抑制產生空白頁面。
例如,如果作業是單頁作業,而且雙工開啟 (假設 n-up = 1),則只需要列印工作表的一側。 目前,列印機會列印一側,然後在反面產生空白頁面。 (因為列印作業是以 duplex=on 啟動,所以列印機會在列印作業彈出紙張之前預期有兩頁。如果第二頁未列印,某些列印機會持續等候。目前解決方案的缺點如下:
產生的頁面會導致會計軟體和印表機內頁面計數器中的頁面計數不正確。
當頁面從印表機中途傳出時(在某些 Hewlett Packard DeskJet 型印表機中),使用者可能會嘗試在印表機嘗試將其拉回時將其拉回。 這種情況可能會導致硬體問題。
您可以在PPD檔案中指定 *MSPrintProcDuplexOptions:“2”,以避免上述問題。
請注意,即使已設定此屬性,也只會在下列有限的案例中執行空白頁面優化:
針對反向列印,只有當整個作業可以容納在紙張的單邊時,才會執行空白頁面優化(例如,具有 n-up=1 的單頁作業或具有 n-up =4 的四頁作業)。 如果作業需要一張以上的工作表,則不會執行優化(因為列印機頁面會以不正確的順序列印)。 例如,對於三頁作業,頁面可能會以 3,2,1,<空白> 的順序列印,而不是 4,3,2,<空白>。
如果列印處理器必須模擬複本,則不會執行空白頁面優化。 如果所需的複本數目大於列印處理器可以建立的複本數目,列印處理器就會模擬複本。
下列情況是模擬發生且產生空白頁面的範例(如有需要):
- 無法製作複本之印表機的兩份複本
下列情況是模擬未發生且您可以隱藏額外頁面產生時的範例:
- 無法製作複本之印表機的單一複製作業
- 印表機的五個複製作業,可以製作超過複本
針對 Windows Vista PScript 驅動程式,如果您有 Windows Vista 前置列印處理器,列印機會視需要列印額外的空白頁面,而且您無法變更行為:否則,如果您有 Windows Vista 列印處理器,列印機會視需要列印額外的空白頁面,而且您無法變更行為。
針對 Windows Vista PScript 驅動程式。 如果您有 Windows Vista 前置列印處理器,列印機會視需要列印額外的空白頁面,而且會忽略 PPD 屬性;否則,如果您有 Windows Vista 印表處理器,而且如果適當的 PPD 屬性和適當的條件存在(也就是說,先前有關防止空白頁面列印的條件),列印機將不會列印空白頁面。
MSBidiQueryFile
MSBiDiQueryFile 屬性會使用下列格式。
*MSBidiQueryFile: "filename"
使用 MSBiDiQueryFile 來指定 GPD 或 GDL 檔名,其中包含印表機驅動程式的自動設定 BidiQuery 和 BidiResponse 數據。 GPD 或 GDL 檔名不應指定任何路徑。
下列程式代碼範例示範部分PPD檔案中的 MSBiDiQueryFile 範例。
*MSBidiQueryFile: "ACnfgPS.GDL"
MSXPSMaxCopies
MSXPSMaxCopies 屬性會使用下列格式。
*MSXPSMaxCopies: "int"
使用 MSXPSMaxCopies 指定 XPSDrv 印表機驅動程式可支援的最大複本數目。
下列程式代碼範例示範部分PPD檔案中的 MSXPSMaxCopies 範例。
*MSXPSMaxCopies: "99"