编写 PCL XL GPD 文件
重要
新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。
有关详细信息,请参阅新式打印平台和打印支持应用设计指南。
本部分提供有关编写 PCL XL GPD 文件的常规信息,例如 GPD 文件应包括哪些文件、如何在 GPD 文件中启用 PCL XL 以及如何在 PCL XL 流中对 PCL XL 命令进行排序。
Windows 驱动程序工具包 (WDK) 的 \src\print\mini\mdw\vector\pcl6 目录中包含一个 PCL XL GPD 示例文件 (p6sample.gpd)。 (此资源或许不提供某些语言版本,或在某些国家或地区可能不可用。)
包含的文件
要编写基于 GPD 的微型驱动程序,请使用预处理器指令 *Include 来指定以下 GPD 文件:
pclxl.gpd -- 包含 PCL XL 运算符的宏,以便编写更易于阅读和理解的 GPD 代码。 例如,可以编写 =BeginPage 而不是 <43>。
p6disp.gpd -- 包含用于 pcl5eres.dll 和 pclxl.dll 中资源字符串的宏。
p6font.gpd -- 包含 pclxl.dll 中字体的宏。
pjl.gpd -- 包含 PJL 命令的宏。
除上述文件外,还包括标准 GPD 文件 stdnames.gpd 和 ttfsub.gpd。
以下示例演示了如何将这些文件包含在 GPD 文件中。
*Include: stdnames.gpd
*Include: ttfsub.gpd
*Include: pclxl.gpd
*Include: p6disp.gpd
*Include: p6font.gpd
*Include: pjl.gpd
在 GPD 文件中启用 PCL XL 支持
要启用 PCL XL 矢量支持,只需设置 *Personality 属性。 这通过以下方式完成:
*Personality: = PERSONALITY_PCLXL
PERSONALITY_PCLXL 常量在 stdnames.gpd 中定义。
WDK 中包含一个 GPD 样本文件 p6sample.gpd,可帮助开发人员创建新的 PCL XL 微型驱动程序。
PCL XL 命令排序
与 PCL-5 相比,PCL XL 中的命令顺序更为重要。 PCL 流中的一个小错误可能不会影响作业,但 PCL XL 命令仅在流中的某些点有效,因此 PCL XL (PCL-6) 中的任何错误都会导致 XL 错误页面的发出。 例如,在发送 BeginSession 操作符之前,不能发送 BeginPage 操作符。
PCL XL 流的形式与下面类似。 (图中的缩进只是为了强调这些运算符是成对出现的。)
PJL commands
BeginSession
OpenDataSource
BeginPage
<page data>
EndPage
CloseDataSource
EndSession
PJL commands
PCL XL 流的前面和后面都有 PJL 命令。 PCL XL 流本身以 BeginSession 操作符开始,以 EndSession 操作符结束。 在这对操作符中,还有另一对操作符:OpenDataSource 和 CloseDataSource。 在该操作符对中,有一个或多个 BeginPage/EndPage 操作符对,每发送到打印机一页就有一个操作符对。 页面数据描述了如何呈现单个页面,由一对 BeginPage/EndPage 操作符括起。
有关所有 PCL XL 操作符的详细信息,请参阅 PCL XL 功能参考协议类 2.0 文档。
有关 PCL XL GPD 文件的其他信息
在 PCL XL GPD 文件中,指定字体下载方式的 *FontFormat 属性名仅限于两个值:HPPCL_OUTLINE 和 HPPCL_RES。 第一个值表示 Unidrv 要下载 TrueType 轮廓数据。 第二个值表示 Unidrv 要下载位图软字体数据。
IHV 可以通过限制要下载的字体数量或限制给定字体中要下载的字符数量来减少打印机内存使用量。 *MinFontID 和 *MaxFontID 属性名用于通知 Unidrv 下载 ID 在这些值指定范围内的软字体。 同样,*MinGlyphID 和 *MaxGlyphID 属性名用于将给定字体中要下载的字形数量限制在特定范围内。
Unidrv 的运行假设是每个 GPD 文件都包含自己的抖纹矩阵。 此外,建议每个设备都有自己的抖纹矩阵。 抖纹矩阵在 *Feature 中指定:抖纹自定义功能。