Cor, perfis e por que o seu vermelho não é o meu vermelho
Spec: ISO 32000-2, §8.6ISO 32000-2 §8.6Spec: ISO 15930, PDF/XISO 15930 PDF/X
Visão geral
Seção intitulada “Visão geral”Uma cor em um PDF não é uma sensação fixa. Ela é uma instrução, e se essa instrução produz o mesmo vermelho no seu laptop, em um celular e em uma impressora gráfica depende inteiramente de como a cor foi descrita. Esta página trata da diferença entre uma cor que apenas diz a um dispositivo o que fazer e uma cor que diz como ela deve de fato se parecer.
Por que isso importa
Seção intitulada “Por que isso importa”Escolha um vermelho de marca. Defina-o uma vez. Agora olhe para ele em um monitor de escritório barato, depois em um celular OLED em uma sala iluminada e então saído de uma impressora offset. Três vermelhos. Às vezes três vermelhos obviamente diferentes. Ninguém mudou o número; o número nunca foi a história inteira.
Para um documento informal, você dá de ombros. Para um logotipo, um rótulo regulamentado, uma fotografia em um catálogo ou um registro destinado a sobreviver por décadas, uma cor que se desloca é um defeito. O custo não é abstrato: é uma reimpressão, uma prova rejeitada ou um arquivo cujas páginas não correspondem mais aos originais. A correção não é um número melhor. É dizer a verdade sobre o que o número significa.
A versão resumida
Seção intitulada “A versão resumida”- A cor de dispositivo nomeia uma cor pelos valores de controle que um
dispositivo recebe, então o resultado é o que aquele dispositivo fizer deles
(Spec: ISO 32000-2, §8.6.4ISO 32000-2 §8.6.4).
DeviceRGB,DeviceCMYKeDeviceGraysão espaços de cor de dispositivo. Mesmos números, hardware diferente, cor diferente. - A cor calibrada, baseada em ICC amarra esses números a uma referência medida e independente de dispositivo por meio de um perfil incorporado (Spec: ISO 32000-2, §8.6.5.5ISO 32000-2 §8.6.5.5). Agora o documento carrega informação suficiente para reproduzir a cor pretendida, não apenas uma receita de valores de controle.
- Um perfil ICC é esse mapeamento medido: como os números de um dispositivo — ou os de um espaço de cor padrão ou condição de saída — se relacionam com a cor que um olho humano perceberia, ancorados a um espaço de conexão independente de dispositivo.
- Um rendering intent é a política para o que fazer quando uma cor está fora do alcance de um dispositivo, porque nenhum dispositivo consegue exibir todas as cores.
- Um output intent é o documento declarando, de antemão, a condição de saída para a qual foi preparado (Spec: ISO 32000-2, §14.11.5ISO 32000-2 §14.11.5). Os fluxos de trabalho de grau de impressão (PDF/X) e de arquivamento (PDF/A) dependem dele.
Como o NextPDF aborda isso
Seção intitulada “Como o NextPDF aborda isso”Comece pela versão honesta do problema. DeviceRGB não contém uma cor. Ele
contém três números entre 0 e 1 e a suposição não dita de que alguma tela vai
transformá-los em luz. Duas telas com retroiluminações diferentes, painéis
diferentes e calibrações diferentes vão transformar os mesmos três números em
luz visivelmente diferente. Isso não é um bug no PDF. É o que “cor de
dispositivo” significa, e o padrão é franco quanto a isso: os espaços de cor de
dispositivo são definidos pelos valores que um dispositivo recebe, não por uma
aparência absoluta (Spec: ISO 32000-2, §8.6.4ISO 32000-2 §8.6.4).
A cor calibrada fecha essa lacuna acrescentando uma referência. Um perfil ICC é o resultado de caracterizar um dispositivo ou espaço de cor — um monitor, uma impressora, uma gráfica ou um espaço padrão como sRGB — e registrar como seus números brutos se relacionam com a cor em um espaço de conexão independente de dispositivo que aproxima a visão humana. Incorpore esse perfil e os números deixam de ser um dialeto privado; eles se tornam uma afirmação ancorada a algo com que todos podem concordar. É exatamente isso que um espaço de cor baseado em ICC carrega (Spec: ISO 32000-2, §8.6.5.5ISO 32000-2 §8.6.5.5): a cor, mais o mapeamento medido que diz o que ela significa.
Há um segundo detalhe, inevitável. O conjunto de cores que uma gráfica consegue imprimir não é o conjunto que um celular consegue exibir, e nenhum dos dois é o conjunto completo que o olho humano consegue ver. Quando uma cor cai fora do que um dispositivo de destino consegue reproduzir, alguma escolha precisa ser feita: recortá-la para a cor alcançável mais próxima, ou deslocar uma faixa inteira de cores em conjunto para que suas relações permaneçam intactas. Essa escolha é o rendering intent — uma política deliberada, escolhida para a tarefa, não um acidente de arredondamento. Uma fotografia e um logotipo corporativo frequentemente querem rendering intents diferentes, porque uma se importa com gradientes suaves e o outro se importa em acertar uma amostra exata.
Por fim, um documento que vai para algum lugar específico pode dizê-lo. Um output intent é o arquivo declarando a condição de saída para a qual foi preparado — tipicamente um perfil ICC de destino incorporado que nomeia uma condição de impressão ou dispositivo (Spec: ISO 32000-2, §14.11.5ISO 32000-2 §14.11.5). É a diferença entre entregar um arquivo a uma impressora e entregar a ela um arquivo que diz “fui construído para esta gráfica.” Os perfis de troca para impressão o tornam obrigatório: um arquivo PDF/X (a família ISO 15930) é obrigado a carregar um output intent (Spec: ISO 15930, PDF/XISO 15930 PDF/X), e o PDF/A se apoia no mesmo mecanismo para que as cores dependentes de dispositivo de um arquivo arquivado permaneçam interpretáveis muito no futuro, muito depois de o ambiente de origem ter desaparecido.
- Name the colourChoose a colour space. DeviceRGB/CMYK/Gray name control values; an ICC-based space anchors them to a device-independent reference (ISO 32000-2 §8.6).
- Anchor it (optional but decisive)Embed an ICC profile so the numbers carry their measured meaning, not just a device recipe (ISO 32000-2 §8.6.5.5).
- Reconcile to the deviceA rendering intent decides what happens to colours the target device cannot reproduce — clip the nearest, or shift the range to preserve relationships.
- Declare the destinationAn output intent states the output condition the document was prepared for, as PDF/X and PDF/A workflows require (ISO 32000-2 §14.11.5).
A função do NextPDF nessa cadeia é ser correto em relação aos padrões: escrever os espaços de cor, os perfis incorporados e os output intents da forma como o formato os define, para que uma ferramenta a jusante — o RIP de uma impressora, um validador de arquivamento, um visualizador — leia exatamente o que foi pretendido. Ele produz as declarações; ele não finge ser o dispositivo.
Exemplo prático
Seção intitulada “Exemplo prático”A forma abaixo esboça a decisão, não uma API específica. O ponto é que o destino é declarado, não adivinhado.
<?php
declare(strict_types=1);
use NextPDF\Contracts\PdfDocumentInterface;
/** * Prepare a print-bound document that declares its intended output condition. * * The colour numbers alone do not fix the appearance. Declaring the output * intent — the print condition the file was built for — is what lets a press * interpret those numbers faithfully (ISO 32000-2 §14.11.5). * * @param PdfDocumentInterface $doc A composed document. * @param string $iccProfileBytes The destination ICC profile for the * target print condition. * * @return string The document bytes, carrying a declared output intent. */function prepareForPress( PdfDocumentInterface $doc, string $iccProfileBytes,): string { // Declare the output condition explicitly. The document now states the // device/print condition it was prepared for, instead of leaving its // device colours open to interpretation. $doc->setOutputIntent( identifier: 'Custom press condition', iccProfile: $iccProfileBytes, );
return $doc->output();}As cores não mudaram. O que mudou é que o arquivo agora diz como elas deveriam se parecer, que é a única coisa sobre a qual uma gráfica ou um validador podem agir.
Equívoco comum
Seção intitulada “Equívoco comum”“É o mesmo valor hexadecimal, então é a mesma cor.” O valor hexadecimal é um conjunto de valores de controle de dispositivo. Sem um perfil ou um output intent, ele é uma receita sem nenhuma cozinha especificada — ela terá um sabor diferente em cada uma. Dois arquivos podem carregar números RGB idênticos e ser honestamente cores diferentes, porque um declara o contexto que dá significado aos números e o outro deixa isso ao acaso.
Uma segunda armadilha: presumir que DeviceCMYK automaticamente significa
“pronto para impressão.” Não significa. CMYK ainda é cor de dispositivo; ele tem
o formato de uma gráfica, mas não é calibrado até que um perfil ou output intent
nomeie a condição de impressão real.
Limites e fronteiras
Seção intitulada “Limites e fronteiras”O NextPDF produz cor correta em relação aos padrões: ele escreve espaços de cor de dispositivo e baseados em ICC e declara output intents para fluxos de trabalho no estilo PDF/X e PDF/A, da forma como o formato os define. Essa é a metade produtora do trabalho, e é a metade que um documento pode chamar de sua.
O que o NextPDF não é, é um sistema de prova de cor. Ele não mede o seu monitor, não faz prova virtual (soft-proof) de uma gráfica na tela, nem certifica que o resultado impresso corresponde a uma amostra pretendida dentro de uma tolerância. Essas tarefas pertencem a uma cadeia de prova com gestão de cor e às pessoas que a operam. O motor faz o arquivo dizer a coisa certa; se o dispositivo final a honra é decidido a jusante, pelo dispositivo, pelos perfis ICC em jogo e — para PDF/X e PDF/A — por um validador, não pelo produtor.
Documentos relacionados
Seção intitulada “Documentos relacionados”- What a PDF actually is — o modelo de objetos dentro do qual esses espaços de cor e output intents vivem.
- Archival and PDF/A — por que a preservação de longo prazo se apoia em cor independente de dispositivo e em output intents.
- The standards landscape — onde a ISO 32000-2, o PDF/X (ISO 15930) e o PDF/A (ISO 19005) se situam uns em relação aos outros.
- PDF 2.0: what changed — como a edição atual do formato enquadra a cor e a conformidade.
Glossário
Seção intitulada “Glossário”- Espaço de cor de dispositivo — uma cor nomeada pelos valores de controle
que um dispositivo recebe (
DeviceRGB,DeviceCMYK,DeviceGray); a aparência depende do dispositivo que a interpreta (ISO 32000-2 §8.6.4). - Cor calibrada / baseada em ICC — cor ancorada a uma referência independente de dispositivo por meio de um perfil ICC incorporado, de modo que a aparência pretendida seja reproduzível entre dispositivos (ISO 32000-2 §8.6.5.5).
- Perfil ICC — um mapeamento medido entre os números de um dispositivo específico e uma referência independente de dispositivo que aproxima a visão humana.
- Rendering intent — a política para lidar com cores que um dispositivo de destino não consegue reproduzir: recortar para a cor alcançável mais próxima, ou deslocar uma faixa para preservar as relações de cor.
- Output intent — a declaração do documento sobre a condição de saída para a qual foi preparado, tipicamente por meio de um perfil ICC de destino incorporado (ISO 32000-2 §14.11.5); exigido pelo PDF/X e usado pelo PDF/A.
- PDF/X — a família de perfis de troca para impressão do PDF, sob a ISO 15930; um arquivo PDF/X deve carregar um output intent que nomeie a condição de impressão de destino.