Ir al contenido
getnextpdf.com

El color, los perfiles y por qué tu rojo no es mi rojo

Spec: ISO 32000-2, §8.6Spec: ISO 15930, PDF/X

Un color en un PDF no es una sensación fija. Es una instrucción, y que esa instrucción produzca el mismo rojo en tu portátil, en un teléfono y en una imprenta depende por completo de cómo se describió el color. Esta página trata sobre la diferencia entre un color que se limita a indicarle a un dispositivo qué hacer y un color que dice qué debería verse en realidad.

Elige un rojo de marca. Defínelo una vez. Ahora míralo en un monitor de oficina barato, luego en un teléfono OLED en una habitación luminosa y, después, salido de una imprenta offset. Tres rojos. A veces, tres rojos claramente distintos. Nadie cambió el número; el número nunca fue toda la historia.

Para un documento informal esto da igual. Para un logotipo, una etiqueta regulada, una fotografía de un catálogo o un registro destinado a sobrevivir décadas, un color que se desvía es un defecto. El costo no es abstracto: es una reimpresión, una prueba rechazada o un archivo cuyas páginas ya no coinciden con los originales. La solución no es un número mejor. Es decir la verdad sobre lo que significa el número.

  • El color de dispositivo nombra un color por los valores de control que recibe un dispositivo, de modo que el resultado es lo que ese dispositivo haga con ellos (Spec: ISO 32000-2, §8.6.4). DeviceRGB, DeviceCMYK y DeviceGray son espacios de color de dispositivo. Mismos números, distinto hardware, distinto color.
  • El color calibrado y basado en ICC vincula esos números a una referencia medida e independiente del dispositivo a través de un perfil incrustado (Spec: ISO 32000-2, §8.6.5.5). Ahora el documento lleva información suficiente para reproducir el color previsto, no solo una receta de valores de control.
  • Un perfil ICC es esa correspondencia medida: cómo los números de un dispositivo —o los de un espacio de color estándar o una condición de salida— se relacionan con el color que percibiría un ojo humano, anclados a un espacio de conexión independiente del dispositivo.
  • Un propósito de representación es la política sobre qué hacer cuando un color queda fuera del alcance de un dispositivo, porque ningún dispositivo puede mostrar todos los colores.
  • Un propósito de salida es el documento declarando, de antemano, la condición de salida para la que fue preparado (Spec: ISO 32000-2, §14.11.5). Los flujos de calidad de imprenta (PDF/X) y de archivo (PDF/A) dependen de él.

Empecemos por la versión honesta del problema. DeviceRGB no contiene un color. Contiene tres números entre 0 y 1 y una suposición tácita de que alguna pantalla los convertirá en luz. Dos pantallas con retroiluminaciones distintas, paneles distintos y calibraciones distintas convertirán los mismos tres números en luz visiblemente diferente. Eso no es un error de PDF. Es lo que significa «color de dispositivo», y la norma es franca al respecto: los espacios de color de dispositivo se definen por los valores que recibe un dispositivo, no por una apariencia absoluta (Spec: ISO 32000-2, §8.6.4).

El color calibrado cierra esa brecha añadiendo una referencia. Un perfil ICC es el resultado de caracterizar un dispositivo o un espacio de color —un monitor, una impresora, una imprenta o un espacio estándar como sRGB— y registrar cómo sus números en bruto se relacionan con el color en un espacio de conexión independiente del dispositivo que aproxima la visión humana. Incrusta ese perfil y los números dejan de ser un dialecto privado; se convierten en una afirmación anclada a algo con lo que todos pueden estar de acuerdo. Eso es exactamente lo que lleva un espacio de color basado en ICC (Spec: ISO 32000-2, §8.6.5.5): el color, más la correspondencia medida que dice qué significa.

Hay una segunda complicación inevitable. El conjunto de colores que puede imprimir una imprenta no es el conjunto que puede mostrar un teléfono, y ninguno de los dos es el conjunto completo que puede ver el ojo humano. Cuando un color queda fuera de lo que un dispositivo de destino puede reproducir, hay que tomar alguna decisión: recortarlo al color alcanzable más cercano, o desplazar todo un rango de colores en conjunto para que sus relaciones se mantengan intactas. Esa decisión es el propósito de representación: una política deliberada, elegida para el trabajo, no un accidente de redondeo. Una fotografía y un logotipo corporativo a menudo quieren propósitos distintos, porque a uno le importan los degradados suaves y al otro le importa acertar con una muestra exacta.

Por último, un documento que va a un destino concreto puede decirlo. Un propósito de salida es el archivo declarando la condición de salida para la que fue preparado —normalmente, un perfil ICC de destino incrustado que nombra una condición de impresión o un dispositivo (Spec: ISO 32000-2, §14.11.5). Es la diferencia entre entregarle a un impresor un archivo y entregarle un archivo que dice «fui construido para esta imprenta». Los perfiles de intercambio para impresión lo hacen obligatorio: un archivo PDF/X (la familia ISO 15930) está obligado a llevar un propósito de salida (Spec: ISO 15930, PDF/X), y PDF/A se apoya en el mismo mecanismo para que los colores dependientes del dispositivo de un archivo archivado sigan siendo interpretables mucho tiempo después, mucho después de que el entorno de origen haya desaparecido.

  1. 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).
  2. 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).
  3. 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.
  4. 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).
Cómo viaja un color desde tu código hasta un resultado fiel: se nombra en un espacio de color, opcionalmente se ancla a una referencia medida mediante un perfil ICC, se reconcilia con el dispositivo de destino a través de un propósito de representación y se interpreta frente a la condición de salida que declara el documento.

El cometido de NextPDF en esta cadena es ser correcto respecto a las normas: escribir los espacios de color, los perfiles incrustados y los propósitos de salida tal como los define el formato, para que una herramienta posterior —el RIP de una impresora, un validador de archivo, un visor— lea exactamente lo que se pretendía. Produce las declaraciones; no finge ser el dispositivo.

La forma de abajo esboza la decisión, no una API concreta. La cuestión es que el destino se declara, no se adivina.

<?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();
}

Los colores no cambiaron. Lo que cambió es que el archivo ahora dice qué se suponía que debían parecer, que es lo único sobre lo que una imprenta o un validador pueden actuar.

«Es el mismo valor hexadecimal, así que es el mismo color». El valor hexadecimal es un conjunto de valores de control del dispositivo. Sin un perfil o un propósito de salida, es una receta sin cocina especificada: sabrá distinto en cada una. Dos archivos pueden llevar números RGB idénticos y ser honestamente colores distintos, porque uno declara el contexto que da significado a los números y el otro lo deja al azar.

Una segunda trampa: suponer que DeviceCMYK significa automáticamente «listo para imprenta». No lo significa. CMYK sigue siendo color de dispositivo; tiene forma de imprenta, pero no está calibrado hasta que un perfil o un propósito de salida nombra la condición de imprenta real.

NextPDF produce color correcto respecto a las normas: escribe espacios de color de dispositivo y basados en ICC y declara propósitos de salida para los flujos estilo PDF/X y PDF/A, tal como lo define el formato. Esa es la mitad productora del trabajo, y es la mitad de la que un documento puede hacerse cargo.

Lo que NextPDF no es es un sistema de pruebas de color. No mide tu monitor, no hace una prueba de impresión por software en pantalla ni certifica que el resultado impreso coincida con una muestra prevista dentro de una tolerancia. Eso corresponde a una cadena de pruebas con gestión de color y a las personas que la operan. El motor hace que el archivo diga lo correcto; que el dispositivo final lo respete se decide aguas abajo, por el dispositivo, los perfiles ICC en juego y —para PDF/X y PDF/A— por un validador, no por el productor.

  • Qué es realmente un PDF: el modelo de objetos dentro del cual viven estos espacios de color y propósitos de salida.
  • Archivo y PDF/A: por qué la preservación a largo plazo se apoya en el color independiente del dispositivo y en los propósitos de salida.
  • El panorama de las normas: dónde se sitúan ISO 32000-2, PDF/X (ISO 15930) y PDF/A (ISO 19005) unos respecto a otros.
  • PDF 2.0: qué cambió: cómo la edición actual del formato encuadra el color y la conformidad.
  • Espacio de color de dispositivo: un color nombrado por los valores de control que recibe un dispositivo (DeviceRGB, DeviceCMYK, DeviceGray); la apariencia depende del dispositivo que lo interpreta (ISO 32000-2 §8.6.4).
  • Color calibrado / basado en ICC: color anclado a una referencia independiente del dispositivo a través de un perfil ICC incrustado, de modo que la apariencia prevista es reproducible entre dispositivos (ISO 32000-2 §8.6.5.5).
  • Perfil ICC: una correspondencia medida entre los números de un dispositivo concreto y una referencia independiente del dispositivo que aproxima la visión humana.
  • Propósito de representación: la política para gestionar los colores que un dispositivo de destino no puede reproducir: recortar al color alcanzable más cercano, o desplazar un rango para preservar las relaciones de color.
  • Propósito de salida: la declaración del documento sobre la condición de salida para la que fue preparado, normalmente mediante un perfil ICC de destino incrustado (ISO 32000-2 §14.11.5); exigido por PDF/X y usado por PDF/A.
  • PDF/X: la familia de perfiles de intercambio para impresión ISO 15930 de PDF; un archivo PDF/X debe llevar un propósito de salida que nombre su condición de impresión de destino.