驱动程序功能
重要
建议使用 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,允许在十进制数字之前或之后使用额外的制表符或空格字符,但不允许使用符号符号。 |
否 | 指定等待超时值。 打印机粘性 |
有关驱动程序功能关键字的说明
%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 指向的输入缓冲区。
仅当满足以下三个条件时,才支持 %CustomPageSize 驱动程序功能:
PPD 文件包含 *CustomPageSize 功能。
*PPD-Adobe 关键字 (keyword) 的值大于或等于 4.3,或者指定了 *UseHWMargin: False 以指示卷送设备。
*PageSize PPD 功能当前选择的选项是 CustomPageSize。
仅当后台处理程序 EMF 后台处理程序已启用时,才支持此功能。
如果支持,将此功能的选项设置为“False”会导致以下 EMF 相关功能发生更改:
如果 %PagePerSheet 为“Booklet”,则会将其更改为“1”。
如果 Collate 设置为“True” (可以直接在 DEVMODEW 结构的公共部分中设置,也可以通过在 *Collate PPD 功能) 上调用 SetOptions 进行设置,但 Collate 功能当前不可用,则 Collate 将设置为“False”。
如果 %PageOrder 与打印机的当前输出顺序设置相反, 则 %PageOrder 将反转为打印机的值。
仅当后台处理程序 EMF 后台处理程序已启用时,才支持此功能。
如果支持此功能,则设置此功能可能会导致以下情况发生:
如果打印机的 PPD 文件包含 *OutputOrder 功能关键字 (keyword) ,则其选项选择将更改,以匹配 %PageOrder 功能的新设置的输出顺序。 这样做是为了防止后台处理程序执行不必要的页面顺序模拟。
如果打印机的 PPD 文件不包含 *OutputOrder 功能,并且 %PageOrder 驱动程序功能的新设置与打印机的当前输出顺序设置相反,并且 %MetafileSpooling 驱动程序功能为“False”,则 %MetafileSpooling 将重置为“True”。
仅当后台处理程序 EMF 后台处理程序已启用并且双工功能可用时,才支持“Booklet”选项。
当支持“Booklet”选项时,将 %PagePerSheet 驱动程序功能设置为“Booklet”可能会导致以下更改:
如果 %MetafileSpooling 驱动程序功能为“False”,则将其重置为“True”。
如果 *双工 PPD 功能设置为“无”,则 *双工 功能将重置为 PPD 文件中定义的第一个非 Simplex 选项。
除了“EPS” (封装的 PostScript) , %OutputFormat 驱动程序功能中指定的格式会根据以下两个特征进行分类:
输出 PostScript 代码是否与页面顺序无关?
输出 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。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈