共用方式為


受保護列印的驅動程序支援

重要

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

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

Windows 8.1包含受保護列印的支援,可讓使用者在列印作業之前指定在印表機上使用的個人識別碼(PIN)。

Windows 8.1也允許系統管理員指定預設 PIN,以減少與列印但從未由使用者擷取的內容相關的浪費性紙張耗用量。 本主題說明提供受保護列印支援的變更,同時也概述將此支援新增至 v4 列印驅動程式所需的步驟。

Windows 8.1引進了可在 PrintTicket 和 PrintCapabilities 檔中使用的新列印架構關鍵詞,以指定受保護的列印。 這些關鍵詞定義於新的 printschemakeywordsv11 命名空間中。 以下是此命名空間的 URI:

https://schemas.microsoft.com/windows/2013/05/printing/printschemakeywordsv11

若要查看如何在 PrintTicket 檔案中指定受保護的列印,請參閱 PIN 列印的範例 PrintTicket 檔案。 若要查看如何在 PrintCapabilities 檔案中指定受保護的列印,請參閱 PIN 列印的範例 PrintCapabilities 檔案。

您可以在這裡下載規格:

列印架構規格 1.1

列印架構規格 2.0

驅動程序變更

如果您使用 v4 驅動程式,則必須變更一般印表機描述 (GPD) 或 PostScript 印表機描述 (PPD) 檔案,以及其他驅動程式相關的程式代碼檔案。 受變更影響的驅動程式相關程式代碼檔案可以分類如下:

  • 驅動程式設定檔 (GPD 或 PPD)
  • XPS 轉譯篩選
  • 印表機延伸模組
  • UWP 裝置應用程式

ou 可以使用 v3 驅動程式搭配 Print Schema 關鍵詞進行受保護的列印,只要您在 PTProvider 程式代碼中進行必要的變更即可。 但是進行這些變更的步驟不在本主題的範圍內。

下列各節提供如何實作可讓 v4 驅動程式支援受保護列印之變更的詳細資訊。

驅動程式組態檔

您指出 v4 列印驅動程式之 DataFile 中受保護列印的支援。 DataFile 是 GPD 或 PPD 檔案,無論您的驅動程式使用哪一個檔案。 您必須同時指定 MinLength 和 MaxLength 指示詞,才能啟用受保護的列印。 下表描述您必須新增至驅動程式 GPD 或 PPD 檔案的相關關鍵字。

要新增至 GPD 檔案的內容

如果您的驅動程式使用 GPD 檔案,請使用下列語法新增關鍵字:

關鍵字 描述 Level 允許的值 範例
*JobPasscodeMinLength 支援的 PIN 數值字串長度下限。

此值必須至少為 4,且不大於 15。
根目錄 任何 GPD 數值 *JobPasscodeMinLength: 4
*JobPasscodeMaxLength 支援的 PIN 數值字串長度上限。

此值必須至少為 4,且不大於 15。 它必須大於或等於 *JobPasscodeMinLength 值。
根目錄 任何 GPD 數值 *JobPasscodeMaxLength: 9

要新增至PPD檔案的內容

如果您的驅動程式使用 PPD 檔案,請使用下列語法新增關鍵字:

關鍵字 描述 Level 允許的值 範例
MSJobPasscodeMinLength 支援的 PIN 數值字串長度下限。

此值必須至少為 4,且不大於 15。
根目錄 “int” (QuotedValue)

換句話說,整數值必須以引號表示。
*MSJobPasscodeMinLength: “4”
MSJobPasscodeMaxLength 支援的 PIN 數值字串長度上限。

此值必須至少為 4,且不大於 15。 它必須大於或等於 *MSJobPasscodeMinLength 值。
根目錄 “int” (QuotedValue)

換句話說,整數值必須以引號表示。
*MSJobPasscodeMaxLength: “9”

指定硬體條件約束

如果您有不支援 PIN 列印且沒有硬碟等可安裝硬體的裝置,請使用 GPD 或 PPD 檔案來指定這些條件約束。 若要這樣做,您必須編輯 GPD 或 PPD 檔案,以顯示 JobPasscode 功能以及 JobPasscode 選項 (開啟和關閉)。 ON/OFF 選項必須將 PrintSchemaKeywordMap 或 MSPrintSchemaKeywordMap 設定為適當的值。

軟體條件約束

不支持這些。

硬體限制

下表顯示如果您想要指定受保護列印和硬體條件約束的支援,則必須使用的關鍵詞有效值。

檔類型關鍵詞有效值 GPD *Feature JobPasscode *Option

  • OFF
  • ON

*PrintSchemaKeywordMap

  • “Off”
  • "On"
  • “JobPasscode”

PPD *Feature JobPasscode *Option

  • OFF
  • ON

*MSPrintSchemaKeywordMap

  • “Off”
  • "On"
  • “JobPasscode”

GPD 和 PPD 檔案範例

以下是使用可安裝硬體條件約束指定 JobPasscode 的 GPD 檔案範例。

*%
*GPDSpecVersion: "1.0"
*GPDFileVersion: "1.0"

*Include:        "StdNames.gpd"
*Include:        "MSxpsinc.gpd"
*ResourceDLL:    "unires.dll"

*GPDFileName:    "FAsmpl.gpd"
*ModelName:      "Fabrikam JobPasscode Sample"
*MasterUnits:    PAIR(1200, 1200)
*PrinterType:    PAGE
*MaxCopies:      999

*JobPasscodeMinLength: 4
*JobPasscodeMaxLength: 15

*%******************************************************************************
*%                             JobPasscode
*%******************************************************************************
*Feature: JobPasscode
{
    *Name: "Job Passcode"
    *DefaultOption: OFF
    *ConcealFromUI: TRUE
    *PrintSchemaKeywordMap: "JobPasscode"

    *Option: OFF
    {
     *PrintSchemaKeywordMap: "Off"
        *Name: "Off"
    }

    *Option: ON
    {
     *PrintSchemaKeywordMap: "On"
        *Name: "On"
    }
}

*Feature:PrinterHardDisk
{
    *rcNameID: RESDLL.PCL5ERES.430
    *FeatureType: PRINTER_PROPERTY
    *DefaultOption: FALSE
    *Option: FALSE
    {
     *DisabledFeatures: LIST(JobPasscode)
        *rcNameID: RESDLL.PCL5ERES.444
    }
    *Option: TRUE
    {
        *rcNameID: RESDLL.PCL5ERES.443
    }
}

您必須使用 *ConcealFromUI 關鍵詞,並將其設定為 TRUE,以防止意外顯示受保護的列印選項。 請參閱上述 GPD 檔案範例。

以下是使用可安裝硬體條件約束指定 JobPasscode 的 PPD 檔案範例。

*MSJobPasscodeMinLength: "4"
*MSJobPasscodeMaxLength: "15"

*OpenGroup: InstallableOptions/Installable Options

*% ===== Optional Hard Disk =====
*OpenUI *HardDisk/Printer Hard Disk: Boolean
*DefaultHardDisk:  False
*HardDisk False/Not Installed: ""
*HardDisk True/Installed: ""
*CloseUI: *HardDisk

*CloseGroup: InstallableOptions

*% ===== JobPasscode Feature =====
*OpenUI *JobPasscode: PickOne
*DefaultJobPasscode: On
*JobPasscode On: ""
*CloseUI: *JobPasscode

*MSPrintSchemaKeywordMap: JobPasscode  *JobPasscode
*MSPrintSchemaKeywordMap: JobPasscode  On *JobPasscode On

*UIConstraints: *HardDisk False *JobPasscode

如您在上述 PPD 檔案範例中所見,*UIConstraints 關鍵詞會指出硬體條件約束。

Windows 作業系統會自動顯示受保護列印功能及其相關選項的地區設定特定字串。 您無法為此功能或其選項指定新的本地化名稱。

XPS 轉譯篩選

現有裝置的驅動程式需要變更其轉譯碼,讓這些驅動程式可以將 PIN 值的 PrintTicket 表示轉換成裝置瞭解的值。 一般而言,這需要將程式代碼新增至現有的 XPS 轉譯篩選,或新增新的 XPS 轉譯篩選器以支援受保護的列印。 針對 PCL6 和 PostScript 使用標準 XPS 轉譯篩選的驅動程式應該為其篩選管線開發新的數據流篩選。 這個新的數據流篩選會在數據流通過標準篩選之後,將適當的命令插入其篩選管線中預先轉譯的 PDL 數據流。

Microsoft建議將用戶端或伺服器電腦上的轉譯需求降到最低,任何支援 XPS 或 OpenXPS 的新裝置都應該支援新的關鍵詞,而不需使用其他轉換。

印表機延伸模組

印表機延伸模組應該能夠在其列印喜好設定UI中顯示受保護的印表項。 這可確保傳統型應用程式的使用者在使用印表機擴充功能時可以設定受保護的印表功能。 Microsoft進行變更,可讓 IPrintSchemaTicket 系列 API 支援從印表機延伸模組進行受保護的列印。

UWP 裝置應用程式

Microsoft也會進行變更,以允許 IPrintSchemaTicket 系列 API 與 UWP 裝置應用程式搭配運作,以在其列印喜好設定 UI 中顯示受保護列印的控件。