驱动程序功能

重要

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

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

驱动程序功能是由驱动程序 (合成的非 PPD 功能,例如 %OutputFormat 功能) 。 为了避免名称与 PPD 功能关键字发生冲突,所有驱动程序功能关键字 (keyword) 名称前面都带有“%”字符。 驱动程序功能/选项关键字也区分大小写。

若要获取驱动程序支持的所有驱动程序功能关键字的列表,插件可以调用 EnumFeatures,这将返回包含驱动程序功能和 PPD 功能关键字 (keyword) 列表的功能。 然后,该插件可以搜索以“%”前缀开头的功能关键字 (keyword) 名称,以获取驱动程序功能列表。

下表列出了当前支持的驱动程序功能。 表中的每一行都列出了一个驱动程序功能关键字 (keyword) ,显示支持的选项,指出是否可以在调用 EnumOptions 时枚举该功能的选项,并提供简要说明。

驱动程序功能 支持的选项 枚举选项 说明和注释
%AddEuro “True”

“False”
向设备字体添加欧元符号。

仅级别 2+ 打印机支持此功能。 对于级别 1 打印机, SetOptions 将忽略此功能, 并且 GetOptions 始终返回“False”。
%CtrlDAfter “True”

“False”
在每个作业之后发送 Ctrl-D。

打印机粘性
%CtrlDBefore “True”

“False”
在每个作业之前发送 Ctrl-D。

打印机粘性
%CustomPageSize 有关详细信息,请参阅下面的注释 1。 指定 PostScript 自定义页面大小参数。

文档粘滞
%GraphicsTrueGray “True”

“False”
将灰色图形转换为 PostScript 灰色。

打印机粘性
%JobTimeout 以 NULL 结尾的 ANSI 字符串,包含十进制数字字符,表示超时的无符号整数秒数,范围为 0 到 2,147,483,647。

对于 SetOptions,允许在十进制数字之前或之后使用额外的制表符或空格字符,但不允许使用符号符号。
指定作业超时值。

打印机粘性
%MaxFontSizeAsBitmap 以 NULL 结尾的 ANSI 字符串,包含十进制数字字符,表示像素的无符号整数,范围为 0 到 32,767。

对于 SetOptions,允许在十进制数字之前或之后使用额外的制表符或空格字符,但不允许使用符号符号。
指定要下载为位图的最大字号。

打印机粘性
%MetafileSpooling “True”

“False”
启用/禁用高级打印功能。

文档粘滞

有关详细信息,请参阅下面的说明 2。
%MinFontSizeAsOutline 以 NULL 结尾的 ANSI 字符串,包含十进制数字字符,表示像素的无符号整数,范围为 0 到 32,767。

对于 SetOptions,允许在十进制数字之前或之后使用额外的制表符或空格字符,但不允许使用符号符号。
指定要下载为大纲的最小字号。

打印机粘性
%Mirroring “True”

“False”
通过反转水平坐标来镜像输出。

文档粘滞
%Negative “True”

“False”
通过反转黑白值生成负输出。 仅黑白打印机支持此功能。 对于彩色打印机, SetOptions 将忽略此功能, 并且 GetOptions 始终返回“False”。

文档粘滞
%Orientation “Portrait”、“Landscape”、“RotatedLandscape” 指定输出方向。

文档粘滞
%OutputFormat “速度”、“可移植性”、“EPS”、“存档” 指定 PostScript 输出格式。

文档粘滞

有关详细信息,请参阅下面的注释 5。
%OutputProtocol “ASCII”、“BCP”、“TBCP”、“Binary” 指定打印机将用于打印作业的协议。 假定 PostScript 打印机支持“ASCII”和“Binary”,因此这些选项始终可用。 “BCP”和“TBCP”选项仅在支持时才可用。 若要确定这一点,检查全局属性“协议”。

打印机粘性
%OutputPSLevel "1", "2", "3" 指定要用于打印作业的 PostScript 语言级别。 设置永远不会大于“LanguageLevel”全局属性中指定的值。

文档粘滞
%PageOrder “FrontToBack”

“BackToFront”
指定页面的打印顺序。

文档粘滞

有关详细信息,请参阅下面的注释 3。
%PagePerSheet "1", "2", "4", "6",

“9”、“16”、“Booklet”
指定每个物理工作表的逻辑页数。 此功能也称为“N-up”打印。

文档粘滞

有关详细信息,请参阅下面的注释 4。
%PSErrorHandler “True”

“False”
Send PostScript 错误处理程序。

文档粘滞
%PSMemory 以 NULL 结尾的 ANSI 字符串,包含十进制数字字符,表示 PostScript 内存的无符号整数,范围为 0 到 2,147,483,647。

对于 SetOptions,允许在十进制数字之前或之后使用额外的制表符或空格字符,但不允许使用符号符号。
指定可用的 PostScript 虚拟内存量。

核心驱动程序需要一定数量的可用 PostScript 虚拟内存来处理它。 如果 %PSMemory 设置为低于此最小值,则最小值将用作新值。 目前,对于级别 1 打印机,最小值为 172 KB,级别 2 以上打印机的最小值为 249 KB。

打印机粘性
%TextTrueGray “True”

“False”
将灰色文本转换为 PostScript 灰色。

打印机粘性
%TTDownloadFormat “Automatic”、“Outline”、“Bitmap”、“NativeTrueType” 指定 TrueType 字体下载格式。 仅当“TTRasterizer”全局属性指示支持“Type42”时,才支持“NativeTrueType”。

文档粘滞
%WaitTimeout 以 NULL 结尾的 ANSI 字符串,包含十进制数字字符,表示超时的无符号整数秒数,范围为 0 到 2,147,483,647。

对于 SetOptions,允许在十进制数字之前或之后使用额外的制表符或空格字符,但不允许使用符号符号。
指定等待超时值。

打印机粘性

有关驱动程序功能关键字的说明

  1. %CustomPageSize 驱动程序功能有五个选项值:x、y、WidthOffset、HeightOffset 和 FeedDirection。 有关这些参数的详细说明 ,请参阅 PostScript 打印机说明文件格式规范版本 4.3 的第 5.16 节。

    %CustomPageSize 条目包含 %CustomPageSize 关键字 (keyword) ,以及 x、y、WidthOffset、HeightOffset 和 FeedDirection 选项的值。 第一项是 %CustomPageSize 关键字 (keyword) ,后跟 NULL 字符。 x、y、WidthOffset 和 HeightOffset 的值遵循此关键字 (keyword) ,显示为无符号十进制数字的子字符串,每个字符串表示相应选项值的 PostScript 点数。 每个数值后跟一个或多个空格或制表符。 字符串中的最后一项是 FeedDirection 的值,该值以 NULL 字符结尾。 FeedDirection 的选项是“LongEdge”、“ShortEdge” (对应于方向 0 和 1) ,“LongEdgeFlip”、“ShortEdgeFlip” (对应于方向 2 和 3) 。 检查 *LeadingEdge PPD 功能关键字 (keyword) ,了解支持的源方向。

    对于 GetOptions,pmszFeatureOptionBuf 指向的输出缓冲区如上一段中所述。 在以下示例中,x 的值为 612,y 的值为 792,WidthOffset 和 HeightOffset 的值为 0,FeedDirection 的值为“ShortEdge”。

    "%CustomPageSize\0612 792 0 0 ShortEdge\0"
    

    对于 SetOptions,允许在十进制数字之前或之后使用额外的制表符或空格字符,但不允许使用符号符号。 否则,应按上述方式构造 pmszFeatureOptionBuf 指向的输入缓冲区。

  2. 仅当满足以下三个条件时,才支持 %CustomPageSize 驱动程序功能:

    1. PPD 文件包含 *CustomPageSize 功能。

    2. *PPD-Adobe 关键字 (keyword) 的值大于或等于 4.3,或者指定了 *UseHWMarginFalse 以指示卷送设备。

    3. *PageSize PPD 功能当前选择的选项是 CustomPageSize。

  3. 仅当后台处理程序 EMF 后台处理程序已启用时,才支持此功能。

    如果支持,将此功能的选项设置为“False”会导致以下 EMF 相关功能发生更改:

    1. 如果 %PagePerSheet 为“Booklet”,则会将其更改为“1”。

    2. 如果 Collate 设置为“True” (可以直接在 DEVMODEW 结构的公共部分中设置,也可以通过在 *Collate PPD 功能) 上调用 SetOptions 进行设置,但 Collate 功能当前不可用,则 Collate 将设置为“False”。

    3. 如果 %PageOrder 与打印机的当前输出顺序设置相反, 则 %PageOrder 将反转为打印机的值。

  4. 仅当后台处理程序 EMF 后台处理程序已启用时,才支持此功能。

    如果支持此功能,则设置此功能可能会导致以下情况发生:

    1. 如果打印机的 PPD 文件包含 *OutputOrder 功能关键字 (keyword) ,则其选项选择将更改,以匹配 %PageOrder 功能的新设置的输出顺序。 这样做是为了防止后台处理程序执行不必要的页面顺序模拟。

    2. 如果打印机的 PPD 文件不包含 *OutputOrder 功能,并且 %PageOrder 驱动程序功能的新设置与打印机的当前输出顺序设置相反,并且 %MetafileSpooling 驱动程序功能为“False”,则 %MetafileSpooling 将重置为“True”。

  5. 仅当后台处理程序 EMF 后台处理程序已启用并且双工功能可用时,才支持“Booklet”选项。

    当支持“Booklet”选项时,将 %PagePerSheet 驱动程序功能设置为“Booklet”可能会导致以下更改:

    1. 如果 %MetafileSpooling 驱动程序功能为“False”,则将其重置为“True”。

    2. 如果 *双工 PPD 功能设置为“无”,则 *双工 功能将重置为 PPD 文件中定义的第一个非 Simplex 选项。

  6. 除了“EPS” (封装的 PostScript) , %OutputFormat 驱动程序功能中指定的格式会根据以下两个特征进行分类:

    1. 输出 PostScript 代码是否与页面顺序无关?

    2. 输出 PostScript 代码是否包含通常使用 setpagedevice 运算符) 的设备控制命令 (?

      类别 页顺序独立 setpagedevice
      存档
      可移植性
      Speed

当对驱动程序功能关键字调用 GetOptions 时,如果无法识别请求的功能关键字 (keyword) ,或者该功能关键字 (keyword) 已识别,但在当前文档粘滞模式或打印机粘滞模式下不受支持 (请参阅替换 Driver-Supplied 属性表页) ,则只会忽略该功能,并且输出缓冲区不会包含其功能/选项关键字 (keyword) 对。

例如,假设调用 GetOptions 方法,并且 pmszFeaturesRequested 输入缓冲区包含以下MULTI_SZ格式) 字符串 (:

"Resolution\0%CustomPageSize\0Unknown_Name\0%Orientation\0\0"

GetOption 返回后,pmszFeatureOptionBuf 输出缓冲区可能包含此字符串 (也以MULTI_SZ格式) :

"Resolution\0300dpi\0%CustomPageSize\0612 792 0 0 ShortEdge\0%Orientation\0RotatedLandscape\0\0"

请注意,第一个字符串中列出的) 不存在Unknown_Name功能 (不会出现在第二个字符串中,因为 Pscript 驱动程序无法识别它。 其他功能(分辨率、 %CustomPageSize%Orientation)以及它们的当前选项(分别为“300dpi”、“612 792 0 0 ShortEdge”和“RotatedLandscape”)显示在输出字符串中。 有关 %CustomPageSize 选项的说明,请参阅驱动程序功能。

当对驱动程序功能关键字调用 SetOptions 时,如果无法识别 pmszFeatureOptionBuf 指向的输入缓冲区中请求的功能关键字 (keyword) 或其选项关键字 (keyword) ,或者该功能已识别,但在当前文档粘滞模式或打印机粘滞模式下不受支持 (请参阅替换 Driver-Supplied 属性工作表页) ,或同时替换两者关键字 (keyword) 及其选项关键字 (keyword) 被识别,但选项关键字 (keyword) 对该功能 (无效,例如,尝试在不支持 Type42 TTRasterizer) 的打印机上将 %TTDownloadFormat 设置为“NativeTrueType”,则该功能/选项对将被忽略,该功能的当前选项将忽略继续有效。

pmszFeatureOptionBuf 指向的缓冲区中功能/选项关键字 (keyword) 对的顺序可能会影响 SetOptions 调用的结果。 例如,以下两个不同的顺序具有不同的结果。

pmszFeatureOptionBuf %PagePerSheet %MetafileSpooling
“%MetafileSpooling\0False\0%PagePerSheet\0Booklet\0\0” “Booklet” “True”
“%PagePerSheet\0Booklet\0%MetafileSpooling\0False\0\0” "1" “False”

有关发生这些结果的原因的说明,请参阅上面的 %MetafileSpooling 上的注释 3。