处理颜色格式
重要
新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。
有关详细信息,请参阅新式打印平台和打印支持应用设计指南。
打印机支持的每种颜色格式都是作为 ColorMode 功能的选项指定的。 通过使用 ColorMode 功能的选项属性,可以描述打印机接受的每种颜色格式。 下表说明了 Unidrv 可以处理的颜色数据格式。
颜色平面数 | 每个像素的位数 |
---|---|
设备中 (*DevNumOfPlanes) | 设备中 (*DevBPP) |
1 | 1(黑白) |
1 | 8 |
1 | 24 |
3 | 1(CMY 和 RGB) |
4 | 1 (CMYK) |
对于这些格式,Unidrv 可以将设备无关位图 (DIB) 数据转换为适当的格式,并将其发送到打印机。 (可对该数据执行的半色调操作在使用 Unidrv 设置半色调中介绍。)
如果打印机支持上表中未列出的颜色格式,则必须执行以下操作:
将 *DevNumOfPlanes 和 *DevBPP 属性设置为零。 这样做可以防止 Unidrv 向打印机发送 DIB 数据。
提供一个可实现 IPrintOemUni ImageProcessing 方法的呈现插件。
IPrintOemUni ImageProcessing 方法必须执行以下操作:
将 DIB 数据转换为打印机的颜色格式。
对数据执行半色调操作。
将数据发送到打印后台处理程序。
有关提供 IPrintOemUni ImageProcessing 函数的详细信息,请参阅自定义颜色格式。
呈现高质量图像
对于每种颜色格式,既要指定打印机硬件接受的每像素位数,又要指定 Unidrv 在创建 DIB 时使用的每像素位数。 这些值分别由 *DevBPP 和 *DrvBPP 属性指定。 有时,需要将图像呈现为位图,其每个像素的位数高于打印机所能处理的位数(例如,为了尝试复制高质量的照片)。 因此,可以指定一个大于 *DevBPP 值乘以 *DevNumOfPlanes 值的 *DrvBPP 值。
例如,假设要定义一个 ColorMode 选项,使图像以 24 位/像素位图的形式呈现,但又希望位图以 CMYK 数据的形式发送到打印机。 这种模式的定义方法如下:
*Feature: ColorMode
{
*Option: 24toCMYK
{
*Name: "Photographic Quality"
*DrvBPP: 24
*DevNumOfPlanes: 4
*DevBPP: 1
*ColorPlaneOrder: LIST(CYAN, MAGENTA, YELLOW, BLACK)
*IPCallbackID: 1
}
other options
}
在本例中,*DevBPP 和 *DevNumOfPlanes 属性表示 Unidrv 可以呈现并发送到打印机的四平面、每平面一位的 CMYK 格式。 但在这种情况下,必须在打印之前对呈现的图像进行半色调操作。 必须使用微型驱动程序提供的半色调。