Поделиться через


Обработка форматов цветов

Внимание

Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуем использовать драйвер класса Microsoft IPP Inbox вместе с приложениями поддержки печати (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 значение нулю. Это предотвращает отправку данных DIB на принтер через Unidrv.

  • Предоставьте модуль рендеринга, который реализует метод IPrintOemUni ImageProcessing.

Метод IPrintOemUni ImageProcessing должен выполнять следующие операции:

  • Преобразуйте данные DIB в цветной формат принтера.

  • Выполните полутонные операции с данными.

  • Отправьте данные в спулер печати.

Дополнительные сведения о предоставлении функции IPrintOemUni ImageProcessing см. в разделе "Настраиваемые цветовые форматы".

Отрисовка высококачественных изображений

Для каждого формата цвета необходимо указать оба бита на пиксель, которые принимает оборудование принтера, и биты на пиксели, которые требуется использовать Unidrv при создании DIOB-объектов. Эти значения задаются атрибутами *DevBPP и *DrvBPP соответственно. Иногда желательно, чтобы изображения отображались как растровые изображения с большим количеством битов на пиксель, чем принтер может обрабатывать (например, чтобы попытаться воспроизвести высококачественные фотографии). Поэтому можно указать значение *DrvBPP, превышающее результат умножения значения *DevBPP на значение *DevNumOfPlanes.

Например, предположим, что вы хотите определить параметр 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 представляют четырехуровневый формат CMYK, который Unidrv может отрисовывать и отправлять на принтер. Однако в этом случае операции полутонирования должны выполняться на отрисованном изображении перед печатью. Должно быть использовано полутонирование, осуществляемое минидрайверами.