值宏

重要

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

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

值宏可用于指定一组要单独和重复插入到通用打印机描述 (GPD) 文件中的一个或多个值。 值可为任意 GPD 值类型

以下规则适用于值宏的使用:

  • GPD 文件中的值宏定义必须位于针对它的所有引用之前。

  • 在根级别(即,大括号外)定义的值宏可通过定义它的 GPD 文件在其定义后进行使用。 否则,值宏的范围则为包含其定义的左、右大括号的集合。

  • 值宏必须解析为某一 GPD 值类型

  • 如果所有值均为文本字符串,值宏定义则可引用以前定义的其他值宏,但值宏无法引用自身。

  • 值宏不接受参数。

  • 如果要创建具有相同名称的两个值宏,则第一个定义将生效,直到 GPD 分析程序遇到第二个定义。 然后,第二个定义会替换第一个定义。 如果第二个定义的范围已结束,则会恢复第一个定义。

值宏格式

若要在 GPD 文件中定义一个或多个值宏,请使用以下格式:

*Macros: *ValueMacroGroupName { ValueMacroBody }

其中,ValueMacroGroupName 为唯一名称,ValueMacroBody 则为一组唯一值名称和关联值,如下所示:

ValueMacroName : MacroValue

其中,ValueMacroName 为唯一宏名称,MacroValue 则表示 GPD 值类型。 (只要解析出的字符串表示某一 GPD 值类型,MacroValue 便可包含对以前定义的值宏的引用。)

例如,可为一组常用命令前缀定义值宏,如下所示:

*Macros: HP4L
{
    LetterCmdPrefix: "<1B>&l2a8c1E<1B>*p0x0Y"
    A4CmdPrefix: "<1B>&l26a8c1E<1B>*p0x0Y"
    Env10CmdPrefix: "<1B>&l81a8c1E<1B>*p0x0Y"
}

ValueMacroGroupName(在本例中为 HP4L)为可选参数,且被视为注释。

引用值宏

若要引用值宏,请使用以下格式:

= ValueMacroName

其中,ValueMacroName 为唯一名称,并于之前在定义该宏的 *Macros 条目中指定。

例如,若要在命令规范中引用某一 HP4L 宏,则可使用以下条目:

*Command: CmdSelect
{
    *Cmd: =LetterCmdPrefix "<1B>*c0t5760x7680Y"
}

仅当所有宏定义和其他值均表示文本或命令子字符串时,才可通过将宏引用与非宏值相结合来分配值,如本示例所示。 在所有其他情况下,宏引用均须代表要分配的整个值。