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

重要

新式打印平台是 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 设备应用

只要对 PTProvider 代码进行必要的修改,就可以使用带有打印架构关键字的 v3 驱动程序进行保护打印。 但进行这些更改的步骤不在本主体的讨论范围之内。

以下各部分将详细介绍如何实现更改以便让 v4 驱动程序支持保护打印。

驱动程序配置文件

在 v4 打印驱动程序的数据文件中指明对保护打印的支持。 DataFile 是 GPD 文件或 PPD 文件,以驱动程序使用的文件为准。 要启用保护打印,必须同时指定 MinLength 和 MaxLength 指令。 下表描述了必须添加到驱动程序的 GPD 或 PPD 文件中的相关关键字。

添加到 GPD 文件的内容

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

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

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

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

添加到 PPD 文件的内容

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

关键字 说明 Level 允许的值 示例
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 设置为适当的值。

软件约束

这些不受支持。

硬件约束

下表列出了关键字的有效值,如果要指定支持受保护打印和硬件约束,则必须使用这些关键字。

File type Keyword Valid values GPD *Feature JobPasscode *Option

  • OFF
  • ON

*PrintSchemaKeywordMap

  • "Off"
  • "On"
  • "JobPasscode"

PPD *Feature JobPasscode *Option

  • OFF
  • ON

*MSPrintSchemaKeywordMap

  • "Off"
  • "On"
  • "JobPasscode"

GPD 和 PPD 文件示例

下面是一个 GPD 文件示例,其中指定了具有可安装硬件约束的 JobPasscode。

*%
*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 文件示例。

以下是一个 PPD 文件示例,其中指定了具有可安装硬件约束的 JobPasscode。

*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 建议,为尽量减少客户端或服务器 PC 上的呈现要求,任何支持 XPS 或 OpenXPS 的新设备都应支持新关键字,而无需使用额外的转换。

打印机扩展

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

UWP 设备应用

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