命令执行顺序

重要

新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅新式打印平台打印支持应用设计指南

打印机命令必须以有意义的顺序发送到打印机硬件。 对于 GPD 语言中定义的大多数命令名称,Unidrv 知道何时向打印机发送命令的转义序列。 有两种例外情况:

选项选择命令

打印机配置命令

对于这两种命令类型,都必须指定执行命令的顺序。

命令执行顺序由两部分组成 - 作业部分名称和顺序号。 Unidrv 驱动程序会将每个打印任务分为六个部分。 对于每个部分,Unidrv 按指定顺序向打印机发送分配给该部分的命令。 定义了以下部分:

JOB_SETUP
分配给 JOB_SETUP 部分的命令每个任务只会发送一次。 它们是新作业开始时发出的第一条命令。 这些命令是从 Unidrv 的 DrvStartDoc 函数实现中发送的。

DOC_SETUP
分配给 DOC_SETUP 部分的命令将在发送文档第一页之前发送。 命令是从 Unidrv 的 DrvStartDoc 函数实现中发送的。 (这些命令也会在应用程序调用 Win32 ResetDC 函数后发送。本部分中的命令不得删除已下载的信息,如软字体和图案。)

PAGE_SETUP
分配给 PAGE_SETUP 部分的命令会在每个新的页开始绘制前发送。 这些命令是从 Unidrv 的 DrvStartPage 函数实现中发送的。

PAGE_FINISH
分配给 PAGE_FINISH 部分的命令会在绘图完成后的每一页结束时发送。 这些命令是从 Unidrv 的 DrvSendPage 函数实现中发送的。

DOC_FINISH
分配给 DOC_FINISH 部分的命令将在文档最后一页发送完毕后发送。 这些命令是在 Unidrv 的 DrvEndDoc 函数实现中发送的。 (本部分中的命令不得删除已下载的信息,如软字体和图案。)

JOB_FINISH
分配给 JOB_FINISH 部分的命令每个任务只会发送一次。 它们是作业结束时发送的最后一条命令。 这些命令是从 Unidrv 的 DrvEndDoc 函数实现中发送的。

在这些部分中,命令按照序列号指示的顺序执行。

要指定命令的部分和序列号,请使用 *Order 属性,该属性在命令属性中进行了介绍。 格式为:

*Order: SectionName.SequenceNumber

其中 SectionName 是 JOB_SETUP、DOC_SETUP、PAGE_SETUP、PAGE_FINISH、DOC_FINISH 或 JOB_FINISH 中的一个,而 SequenceNumber 是一个数值。

序列号不必是连续的,但在一个部分内指定的每个号码必须是唯一的。 一个部分中的命令从序列号最小的命令开始执行,直到序列号最大的命令。 例如,以下条目表示 InputBinPaperSizeResolution 功能的选项被分配到 DOC_SETUP 部分,并按指定顺序发送:

*Feature: InputBin
{
    *Option: Auto
    {
        *Name: "Auto Tray"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.50
            *Cmd: "<1B>(1<010014>"
        }
    }
    ...
}
*Feature: PaperSize
{
    *DefaultOption: Letter
    *Option: Letter
    {
        *Name: "Letter size"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.60
            *Cmd: "<1B>(g<0300>n<01>r"
        }
    }
    ...
}
*Feature: Resolution
{
    *DefaultOption: 360dpi
    *Option: 360dpi
    {
        *Name: "360 dpi x 360dpi"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.70
            *Cmd: "<1B>(d<020001>"
        }
    }
    ...
}