使用 EnumOptions

重要

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

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

调用方可以使用 EnumOptions 检索支持的驱动程序功能和任何 PPD 功能的关键字选项列表。 对于 PPD 功能,始终支持 EnumOptions,它返回 PPD 定义的选项。

对于驱动程序功能,仅对当前支持且具有一组固定选项的功能支持 EnumOptions。 例如:%AddEuro 有两个选项:“True”和“False”,%PageOrder 有两个选项:“FrontToBack”和“BackToFront”。 %AddEuro 支持EnumOptions(如果语言级别为 2 和更高),%PageOrder 也支持(如果启用了后台处理程序 EMF 后台处理)。 但是,%CustomPageSize、%PSMemory 等功能具有无限数量的可能选项,这意味着它们不支持 EnumOptions

对于当前不支持的驱动程序功能,或者对于无法通过 EnumOptions 枚举的受支持驱动程序功能来说,EnumOptions 返回 E_NOTIMPL。

此外,在某些情况下,驱动程序功能的某些选项可能不受支持。 例如,如果在 Windows 2000 及更高版本的操作系统版本上禁用了后台处理程序 EMF 后台处理,则 %PagePerSheet 功能不支持“Booklet”选项。 再举一个例子,如果打印机没有 Type42 光栅器,则 %TTDownloadFormat 不支持“NativeTrueType”选项。 这些不受支持的选项不会显示在 EnumOptions 的输出关键字列表中。

Pscript 以特殊方式处理以下功能关键字:

  • *CustomPageSize 功能关键字转换为 *PageSize 功能关键字的选项,其中“CustomPageSize”是选项关键字。 调用 GetOptionAttribute,以获取其 PPD 参数。

  • *ManualFeed True 条目转换为 *InputSlot 功能关键字的选项,其中“ManualFeed”是选项关键字名称。

  • 对于 *InputSlot 功能关键字,Pscript 始终添加一个驱动程序生成的选项,其选项关键字名称为“*UseFormTrayTable”作为第一个选项(选项关键字名称中使用“*”前缀,以避免与 PPD 定义的选项可能发生名称冲突),后跟 PPD 中定义的选项。 如果选择了“*UseFormTrayTable”选项,Pscript 将使用表单到托盘分配表自动选择支持所选纸张大小的纸盒。