受保护打印的驱动程序支持

重要

建议使用 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 设备应用

只要在 PTProvider 代码中进行了所需的更改,就可以使用带有打印架构关键字的 v3 驱动程序进行受保护打印。 但是,进行这些更改的步骤不在本主题的范围内。

以下部分提供了有关如何实现允许 v4 驱动程序支持受保护打印的更改的详细信息。

驱动程序配置文件

指示支持 v4 打印驱动程序的 DataFile 中的受保护打印。 DataFile 是 GPD 或 PPD 文件 - 无论驱动程序使用哪种文件。 必须同时指定 MinLength 和 MaxLength 指令才能启用受保护的打印。 下表描述了必须添加到驱动程序的 GPD 或 PPD 文件的相关关键字。

要添加到 GPD 文件的内容

如果驱动程序使用 GPD 文件,请使用以下语法添加以下新关键字:

关键字 说明 级别 允许的值 示例
*JobPasscodeMinLength 支持的 PIN 数字字符串的最小长度。

此值必须至少为 4 且不大于 15。
Root 任何 GPD 数值 *JobPasscodeMinLength: 4
*JobPasscodeMaxLength 支持的 PIN 数字字符串的最大长度。

此值必须至少为 4 且不大于 15。 它必须大于或等于 *JobPasscodeMinLength 值。
Root 任何 GPD 数值 *JobPasscodeMaxLength:9

要添加到 PPD 文件的内容

如果驱动程序使用 PPD 文件,请使用以下语法添加以下新关键字:

关键字 说明 级别 允许的值 示例
MSJobPasscodeMinLength 支持的 PIN 数字字符串的最小长度。

此值必须至少为 4 且不大于 15。
Root “int” (QuotedValue)

换句话说,整数值必须用引号表示。
*MSJobPasscodeMinLength: “4”
MSJobPasscodeMaxLength 支持的 PIN 数字字符串的最大长度。

此值必须至少为 4 且不大于 15。 它必须大于或等于 *MSJobPasscodeMinLength 值。
Root “int” (QuotedValue)

换句话说,整数值必须用引号表示。
*MSJobPasscodeMaxLength: “9”

指定硬件约束

如果你的设备不支持在没有可安装硬件(如硬盘驱动器)的情况下进行 PIN 打印,请使用 GPD 或 PPD 文件指定这些约束。 为此,必须编辑 GPD 或 PPD 文件以显示 JobPasscode 功能以及 JobPasscode 选项 (打开和关闭) 。 ON/OFF 选项必须将 PrintSchemaKeywordMap 或 MSPrintSchemaKeywordMap 设置为适当的值。

软件约束

这些 API 不受支持。

硬件约束

下表显示了要指定对受保护打印和硬件约束的支持时必须使用的关键字的有效值。

文件类型 关键字 有效值 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 关键字 (keyword) 并将其设置为 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 关键字 (keyword) 指示硬件约束。

Windows 操作系统会自动显示受保护打印功能及其关联选项的区域设置特定字符串。 不能为此功能或其选项指定新的本地化名称。

XPS 呈现筛选器

现有设备的驱动程序需要更改其呈现代码,以便这些驱动程序可以将 PIN 值的 PrintTicket 表示形式转换为设备理解的值。 通常,这需要向现有 XPS 呈现筛选器添加代码,或者添加新的 XPS 呈现筛选器以支持受保护的打印。 使用适用于 PCL6 和 PostScript 的标准 XPS 呈现筛选器的驱动程序应为其筛选器管道开发新的流筛选器。 在流通过标准筛选器后,此新的流筛选器会将相应的命令注入到其筛选器管道中的预呈现 PDL 流中。

Microsoft 建议将客户端或服务器电脑上的呈现要求降到最低,任何支持 XPS 或 OpenXPS 的新设备都应支持新关键字,而无需使用其他转换。

打印机扩展

打印机扩展应能够在其打印首选项 UI 中显示用于受保护打印的控件。 这可确保桌面应用的用户在使用打印机扩展时可以配置受保护的打印功能。 Microsoft 正在进行更改,允许 IPrintSchemaTicket 系列 API 支持从打印机扩展进行受保护的打印。

UWP 设备应用

Microsoft 还进行了更改,以允许 IPrintSchemaTicket 系列 API 与 UWP 设备应用配合使用,以在其打印首选项 UI 中显示受保护打印的控件。