宏定义
PDF 的这个部分包含了用户定义的宏。宏是表示控制代码或一序列控制代码的一个助记符。助记符简化了对 PC 打印机控制序列的定义,使它更易于读取 PDF 中的信息。
下表显示了宏定义语句的结构。一个宏定义由四部分组成:
| 1 | 2 | 5 | 6 |
|---|---|---|---|
| 名称 | EQU | PC 打印机控制代码 | 注释 |
例如:
FFF EQU 0C /* Form Feed */
第一部分是用户定义的助记符或宏名称。该名称的长度必须 为三个字符,并且决不能以数字开头。这有助于 定义一个有意义的助记符,如 P17 表示字符间距为 17.1。
第二部分 EQU 表示相等,并且必须编码为 EQU。
第三部分是十六进制控制代码,它是特定于 PC 打印机的。每个 PC 打印机生产商都可以 用不同的控制代码定义同一个打印机功能。例如,IBM® 4019 LaserPrinter 使用由“IBM® 个人打印机数据流 (PPDS)”定义的控制代码。Hewlett-Packard 打印机使用由 Hewlett-Packard 打印机控制语言 (PCL) 定义的控制代码。这些控制代码通常在随 打印机交付的手册中给出定义。
一些 PC 打印机手册把控制序列描述为 ASCII 符号的字符串,如 ESC J 1 K:另一些打印机则使用十六进制数,如 1B 57 01;还有一些使用十进制值,如 27 28 1。打印机定义 表编译器接受所有这些格式。
宏定义部分中的控制代码可以是以下任何一个:
- 解释成 ASCII 值的单一字符
- 解释为十六进制值的两位数
- 解释为十进制值的三位数
如果您让控制代码部分为空白,或者如果您删除了它,字符 或控制代码将被解释为空串。如 果字符或控制代码在文件中的定义不止一次,使用最后一次的定义。
第四部分是注解部分。符号 /* 表示注解开始, 符号 */ 表示注解结束。注解可以 在打印机定义文件的任何地方编码,并且被 打印机定义表编译器忽略。
以下是 IBM® 4019 LaserPrinter 特有的宏定义语句的示例。
LFF EQU 0A /* Line Feed */
VTB EQU 0B /* Vertical Tab */
FFF EQU 0C /* Form Feed */
CRR EQU 0D /* Carriage Return */
P05 EQU 1B 57 01 /* 5 Pitch-Characters/inch */
P10 EQU 12 /* 10 Pitch-Characters/inch */
CDW EQU 1B 57 00 /* Cancel Double Wide contin. */
P17 EQU 12 0F /* 17.1 Pitch-Character/inch */
LL8 EQU 1B 41 09 1B 32 /* Set line length 8 lines/inch*/
P12 EQU 1B 3A /* 12 Pitch-characters/inch */
RES EQU 1B 5B 4B 07 00 05 31 01 A4 00 00 90
/* The above macro resets the */
/* printer using the factory */
/* defaults. See the IBM Laser*/
/* Printer Technical Reference */
/* manual. */
要说明宏是如何编码的,请考虑使用本例。要使主机打印作业打印出双倍字宽的 字符,您必须知道什么控制代码可以开启 您的 PC 打印机上的双倍字宽打印。在 IBM® 4019 LaserPrinter 上,开启双倍字宽打印的控制代码是 X'1B5701'。它可以被编码为:
BDW EQU 1B 57 01
其中 BDW 表示开始双倍字宽。
单是这样不会使 3270 主机打印向打印机发送 该控制。助记符必须包括在一个控制代码语句中, 如在文件的控制代码部分中描述的 START_JOB。