处理颜色格式

重要

新式打印平台是 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 设置半色调中介绍。)

如果打印机支持上表中未列出的颜色格式,则必须执行以下操作:

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 格式。 但在这种情况下,必须在打印之前对呈现的图像进行半色调操作。 必须使用微型驱动程序提供的半色调