Partilhar via


Manipulando formatos de cores

Importante

A plataforma de impressão moderna é o meio preferencial do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.

Para obter mais informações, consulte Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.

Cada formato de cor compatível com uma impressora é especificado como uma opção para o recurso ColorMode. Ao usar atributos de opção para o recurso ColorMode, é possível descrever cada formato de cor que sua impressora aceita. A tabela a seguir ilustra os formatos de dados de cores que o Unidrv pode manipular.

Número de planos de cores Número de bits por pixel
no dispositivo (*DevNumOfPlanes) no dispositivo (*DevBPP)
1 1 (Preto e branco)
1 8
1 24
3 1 (CMY e RGB)
4 1 (CMYK)

Para esses formatos, o Unidrv pode converter dados de bitmap independente de dispositivo (DIB) no formato adequado e enviá-los à impressora. (As operações de meio-tom que podem ser executadas nesses dados são descritas em Meio-tom com Unidrv.)

Se a impressora for compatível com formatos de cores que não estão listados na tabela anterior, será necessário fazer o seguinte:

O método IPrintOemUni ImageProcessing precisa realizar as seguintes operações:

  • Converter dados DIB no formato de cores da impressora.

  • Executar operações de meio-tom nos dados.

  • Enviar os dados para o spooler de impressão.

Para mais informações sobre como fornecer uma função IPrintOemUni ImageProcessing, consulte Formatos de cores personalizados.

Renderizando imagens de alta qualidade

Para cada formato de cor, especifique os bits por pixel que o hardware da impressora aceita e os bits por pixel que deseja que o Unidrv use ao criar DIBs. Esses valores são especificados com os atributos *DevBPP e *DrvBPP, respectivamente. Às vezes, é desejável que as imagens sejam renderizadas como bitmaps com um número maior de bits por pixel do que a impressora pode processar (para, por exemplo, tentar reproduzir fotografias de alta qualidade). Portanto, é permitido especificar um valor *DrvBPP maior que o resultado da multiplicação do valor *DevBPP pelo valor *DevNumOfPlanes.

Por exemplo, suponha que você queira definir uma opção ColorMode que faça com que as imagens sejam renderizadas como bitmaps de 24 bits/pixel, mas deseja que o bitmap seja enviado para a impressora como dados CMYK. É possível definir esse modo da seguinte forma:

*Feature: ColorMode
{
    *Option: 24toCMYK
    {
        *Name: "Photographic Quality"
        *DrvBPP: 24
        *DevNumOfPlanes: 4
        *DevBPP: 1
        *ColorPlaneOrder: LIST(CYAN, MAGENTA, YELLOW, BLACK)
        *IPCallbackID: 1
    }
 other options
}

Neste exemplo, os atributos *DevBPP e *DevNumOfPlanes representam o formato CMYK de quatro planos, um bit por plano, que o Unidrv pode renderizar e enviar para a impressora. Contudo, nesse caso, as operações de meio-tom devem ser executadas na imagem renderizada antes que ela seja impressa. O meio-tom fornecido pelo minidriver deve ser usado.