打印机功能属性
重要
新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。
有关详细信息,请参阅新式打印平台和打印支持应用设计指南。
打印机功能属性是常规打印属性,用于指定影响所有纸张大小和方向的页边距、旋转和文本打印功能等打印机特征。
属性名 | 属性参数 | 注释 |
---|---|---|
MemoryUsage | 常量列表,指示存储在打印机内存中的数据的类型。 可以是以下项中的一个或多个:FONT RASTER VECTOR。 如果列出了数据类型,但打印机不支持,则忽略该数据类型。 | 可选。 如果未指定,则默认值为 LIST(FONT, RASTER, VECTOR)。 有关详细信息,请参阅描述打印机内存配置。 |
OEMCustomData | 调用 IPrintOemDriverUni::DrvGetGPDData 时要向呈现插件提供的带引号文本字符串。 | 如果呈现插件调用 IPrintOemDriverUni::DrvGetGPDData,则为必需。 文本字符串内容的解释由呈现插件确定。 此属性是可重定位的全局属性;可将其放置在根级别(请参阅仅限根级别的属性),以表示它不依赖于打印机配置,或者如果存在某种依赖项,则它可能会使用 Option 或 Case 构造显示。 |
OutputOrderReversed? | TRUE 或 FALSE,指示是否将多页文档按最后一页到第一页的顺序排序。 | 可选。 如果未指定,默认值为 FALSE。 不能将 EXTERN_GLOBAL 符号与 OutputOrderReversed? 结合使用。 |
ReselectFont | 指示在其之后 Unidrv 必须重新选择当前字体的操作的常量列表。 可以以下项之一:AFTER_GRXDATA - 在任何 CmdSendXxxxData 光栅数据发射命令之后。 AFTER_XMOVE - 在任何 x 移动光标命令之后。 AFTER_FF - 在 CmdFF 命令之后。 | 可选。 如果未指定,Unidrv 不会重新选择字体。 |
ReverseBandOrderForEvenPages? | TRUE 或 FALSE,指示是否启用反向条带。 此属性用于支持具有 autoduplex 功能的打印机;即能够在纸张两面打印的打印机。 此表后面的部分包含详细信息。 | 此属性的默认值为 FALSE。 将此属性设置为 TRUE 时,将启用反向条带顺序。 此属性是可重定位的全局属性。 可将其放置在根级别(请参阅仅限根级别的属性),以表示它不依赖于打印机配置,或者如果存在某种依赖项,则它可能会使用 Option 或 Case 构造显示。 |
RotateCoordinate? | TRUE 或 FALSE,指示打印机是否支持命令旋转坐标系,以便与页面方向匹配。 | 可选。 如果未指定,默认值为 FALSE。 如果为 TRUE,则方向功能的 Option 条目必须指定打印机命令。 不能放在 Case 条目中。 |
RotateFont? | TRUE 或 FALSE,指示打印机是否自动旋转字体,以便与页面方向匹配。 | 可选。 如果未指定,默认值为 FALSE。 如果为 TRUE,则 RotateCoordinate? 也必须为 TRUE。 不能放在 Case 条目中。 |
RotateRaster? | TRUE 或 FALSE,指示打印机是否自动旋转光栅数据,以便与页面方向匹配。 | 可选。 如果未指定,默认值为 FALSE。 如果为 TRUE,则 RotateCoordinate? 也必须为 TRUE。 不能放在 Case 条目中。 |
TextCaps | 指示打印机文本功能的常量列表。 可以包含 GetDeviceCaps 中介绍的一个或多个 TC_xxx 标志。 | 可选。 如果未指定,Unidrv 假定任何文本功能均不受支持。 |
有关 ReverseBandOrderForEvenPages? 的其他信息
Autoduplex 功能的副作用是,已打印页面的下边缘将送回打印机,成为下一页的上边缘。 要保持第二页相对于第一页的方向,必须按相反顺序将第二页的光栅图像发送到打印机。 换言之,如果打印机先发送顶部扫描行来打印正面,则必须先打印背面底部扫描行。
当 ReverseBandOrderForEvenPages? 为 TRUE 且双工处于打开状态时,Unidrv 将按偶数页的反向顺序枚举每个条带(奇数页的背面)。 OEM 呈现插件需要先缓存一个数据条带,然后再将其发送到打印机。 系统不会反转每个条带内的扫描行顺序,因此插件仍必须处理该任务,并且还必须反转每个扫描行中的位顺序。 虽然这是插件的额外工作,但优势是插件不需要缓存任何光栅数据,并且可以立即开始将数据发送到打印机。
仅当将双工设置为“在长边缘上翻转”时,才会计算 ReverseBandOrderForEvenPages? 属性。 当将双工设置为“在短边缘上翻转”时,系统将忽略此属性。
如下表所示,ReverseBandOrderForEvenPages? 属性值和驱动程序模拟旋转都会影响条带枚举方式。 当 ReverseBandOrderForEvenPages? 为 TRUE 时,选择了双工,并且要打印的页面是第二面(或背面),则适用在标题为 TRUE 的列中指定的条带枚举顺序。 否则,将适用标题为 FALSE 的列。
驱动程序模拟旋转 | TRUE 和偶数页 | FALSE 或奇数页 |
---|---|---|
CCW_ROTATE90 | SW_LTOR | SW_RTOL |
CCW_ROTATE270 | SW_RTOL | SW_LTOR |
无旋转 | SW_UP | SW_DOWN |
图例:SW_LTOR = 从左到右,SW_RTOL = 从右到左,SW_UP = 从下到上,SW_DOWN = 从上到下。
OEM 呈现插件可以在不使用 ReverseBandOrderForEvenPages? 属性的情况下支持自动双工。 插件可以通过缓存整个页面的所有数据并将其发送到打印机(从底部扫描行开始)来完成此操作。 该扫描行以及该页面上的所有其他扫描行均必须按相反顺序发送。
OEM 呈现插件负责反转每个扫描行的位顺序,以及将数据发送到打印机时每个条带的扫描行顺序。 要确定何时必须执行此操作,可以使用索引 SVI_PAGENUMBER 调用 IPrintOemDriverUni::DrvGetStandardVariable,以便获取 PageNumber 标准变量的值。 如果页码为奇数,则无需反转。 如果数字为偶数且选择了双工,则需要反转。