Zum Inhalt springen
getnextpdf.com

Farbe, Profile und warum Ihr Rot nicht mein Rot ist

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

Eine Farbe in einem PDF ist keine feststehende Empfindung. Sie ist eine Anweisung, und ob diese Anweisung dasselbe Rot auf Ihrem Laptop, auf einem Telefon und auf einer Druckmaschine erzeugt, hängt vollständig davon ab, wie die Farbe beschrieben wurde. Auf dieser Seite geht es um den Unterschied zwischen einer Farbe, die einem Gerät lediglich sagt, was es tun soll, und einer Farbe, die sagt, wie sie tatsächlich aussehen soll.

Wählen Sie ein Marken-Rot. Legen Sie es einmal fest. Betrachten Sie es nun auf einem billigen Büromonitor, dann auf einem OLED-Telefon in einem hellen Raum, dann von einer Offset-Druckmaschine gezogen. Drei Rottöne. Manchmal drei offensichtlich unterschiedliche Rottöne. Niemand hat die Zahl geändert; die Zahl war nie die ganze Geschichte.

Bei einem beiläufigen Dokument ist das ein Achselzucken wert. Bei einem Logo, einem regulierten Etikett, einer Fotografie in einem Katalog oder einem Datensatz, der über Jahrzehnte überdauern soll, ist eine driftende Farbe ein Defekt. Die Kosten sind nicht abstrakt: Es ist ein Nachdruck, ein abgelehnter Andruck oder ein Archiv, dessen Seiten nicht mehr mit den Originalen übereinstimmen. Die Lösung ist keine bessere Zahl. Sie besteht darin, die Wahrheit darüber zu sagen, was die Zahl bedeutet.

  • Gerätefarbe benennt eine Farbe über die Steuerwerte, die ein Gerät empfängt, sodass das Ergebnis das ist, was dieses Gerät daraus macht (Spec: ISO 32000-2, §8.6.4). DeviceRGB, DeviceCMYK und DeviceGray sind Gerätefarbräume. Gleiche Zahlen, unterschiedliche Hardware, unterschiedliche Farbe.
  • Kalibrierte, ICC-basierte Farbe bindet diese Zahlen über ein eingebettetes Profil an eine gemessene, geräteunabhängige Referenz (Spec: ISO 32000-2, §8.6.5.5). Nun trägt das Dokument genug Information, um die beabsichtigte Farbe zu reproduzieren, nicht nur ein Rezept aus Steuerwerten.
  • Ein ICC-Profil ist diese gemessene Zuordnung: wie die Zahlen eines Geräts — oder die eines Standardfarbraums oder einer Ausgabebedingung — mit der Farbe zusammenhängen, die ein menschliches Auge wahrnehmen würde, verankert an einem geräteunabhängigen Verbindungsfarbraum.
  • Ein Rendering-Intent ist die Richtlinie dafür, was zu tun ist, wenn eine Farbe außerhalb der Reichweite eines Geräts liegt, denn kein Gerät kann jede Farbe darstellen.
  • Ein Output-Intent ist die Deklaration des Dokuments, im Voraus, für welche Ausgabebedingung es vorbereitet wurde (Spec: ISO 32000-2, §14.11.5). Druckreife (PDF/X-) und Archivierungs-Workflows (PDF/A) hängen davon ab.

Beginnen Sie mit der ehrlichen Fassung des Problems. DeviceRGB enthält keine Farbe. Es enthält drei Zahlen zwischen 0 und 1 und eine unausgesprochene Annahme, dass irgendein Bildschirm sie in Licht verwandeln wird. Zwei Bildschirme mit unterschiedlicher Hintergrundbeleuchtung, unterschiedlichen Panels und unterschiedlicher Kalibrierung verwandeln dieselben drei Zahlen in sichtbar unterschiedliches Licht. Das ist kein Fehler im PDF. Genau das bedeutet „Gerätefarbe“, und der Standard ist darin offen: Gerätefarbräume sind durch die Werte definiert, die ein Gerät empfängt, nicht durch ein absolutes Erscheinungsbild (Spec: ISO 32000-2, §8.6.4).

Kalibrierte Farbe schließt diese Lücke, indem sie eine Referenz hinzufügt. Ein ICC-Profil ist das Ergebnis der Charakterisierung eines Geräts oder Farbraums — eines Monitors, eines Druckers, einer Druckmaschine oder eines Standardfarbraums wie sRGB — und der Aufzeichnung, wie seine Rohzahlen mit der Farbe in einem geräteunabhängigen Verbindungsfarbraum zusammenhängen, der dem menschlichen Sehen nahekommt. Betten Sie dieses Profil ein, und die Zahlen hören auf, ein privater Dialekt zu sein; sie werden zu einer Aussage, verankert an etwas, dem jeder zustimmen kann. Genau das trägt ein ICC-basierter Farbraum (Spec: ISO 32000-2, §8.6.5.5): die Farbe plus die gemessene Zuordnung, die sagt, was sie bedeutet.

Es gibt eine zweite, unvermeidliche Tücke. Die Menge der Farben, die eine Druckmaschine drucken kann, ist nicht die Menge, die ein Telefon anzeigen kann, und keine von beiden ist die vollständige Menge, die das menschliche Auge sehen kann. Wenn eine Farbe außerhalb dessen liegt, was ein Zielgerät reproduzieren kann, muss eine Wahl getroffen werden: sie auf die nächstgelegene erreichbare Farbe beschneiden oder einen ganzen Farbbereich gemeinsam verschieben, sodass ihre Beziehungen erhalten bleiben. Diese Wahl ist der Rendering-Intent — eine bewusste Richtlinie, für die Aufgabe gewählt, kein Zufall der Rundung. Eine Fotografie und ein Firmenlogo wollen oft unterschiedliche Intents, weil dem einen weiche Verläufe wichtig sind und dem anderen das Treffen eines exakten Farbmusters.

Schließlich kann ein Dokument, das an einen bestimmten Ort geht, das auch sagen. Ein Output-Intent ist die Datei, die deklariert, für welche Ausgabebedingung sie vorbereitet wurde — typischerweise ein eingebettetes ICC-Zielprofil, das eine Druckbedingung oder ein Gerät benennt (Spec: ISO 32000-2, §14.11.5). Es ist der Unterschied, ob Sie einem Drucker eine Datei übergeben oder eine Datei, die sagt: „Ich wurde für diese Druckmaschine gebaut.“ Druckaustauschprofile machen ihn verpflichtend: Eine PDF/X-Datei (die ISO-15930-Familie) muss einen Output-Intent tragen (Spec: ISO 15930, PDF/X), und PDF/A stützt sich auf denselben Mechanismus, damit die geräteabhängigen Farben einer archivierten Datei weit in der Zukunft interpretierbar bleiben, lange nachdem die ursprüngliche Umgebung verschwunden ist.

  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).
How a color travels from your code to a faithful result: it is named in a colour space, optionally anchored to a measured reference by an ICC profile, reconciled to the target device through a rendering intent, and interpreted against the output condition the document declares.

Die Aufgabe von NextPDF in dieser Kette ist es, standardkonform zu sein: die Farbräume, eingebetteten Profile und Output-Intents so zu schreiben, wie das Format sie definiert, sodass ein nachgelagertes Werkzeug — der RIP eines Druckers, ein Archivierungsvalidator, ein Viewer — genau das liest, was beabsichtigt war. Es erzeugt die Deklarationen; es gibt nicht vor, das Gerät zu sein.

Die folgende Skizze umreißt die Entscheidung, nicht eine bestimmte API. Der Punkt ist, dass das Ziel angegeben und nicht erraten wird.

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

Die Farben haben sich nicht geändert. Was sich geändert hat, ist, dass die Datei nun sagt, wie sie aussehen sollten, und das ist das Einzige, worauf eine Druckmaschine oder ein Validator reagieren kann.

„Es ist derselbe Hex-Wert, also ist es dieselbe Farbe.“ Der Hex-Wert ist ein Satz von Gerätesteuerwerten. Ohne ein Profil oder einen Output-Intent ist er ein Rezept, ohne dass eine Küche angegeben ist — es wird in jeder anders schmecken. Zwei Dateien können identische RGB-Zahlen tragen und ehrlich unterschiedliche Farben sein, weil die eine den Kontext deklariert, der den Zahlen Bedeutung gibt, und die andere ihn dem Zufall überlässt.

Eine zweite Falle: anzunehmen, DeviceCMYK bedeute automatisch „druckfertig“. Das tut es nicht. CMYK ist immer noch Gerätefarbe; es ist auf den Druck zugeschnitten, aber es ist nicht kalibriert, bis ein Profil oder ein Output-Intent die tatsächliche Druckbedingung benennt.

NextPDF erzeugt standardkonforme Farbe: Es schreibt Geräte- und ICC-basierte Farbräume und deklariert Output-Intents für PDF/X-artige und PDF/A-Workflows, so wie das Format sie definiert. Das ist die erzeugende Hälfte der Aufgabe, und es ist die Hälfte, die ein Dokument besitzen kann.

Was NextPDF nicht ist, ist ein Farbproofing-System. Es vermisst nicht Ihren Monitor, simuliert keine Druckmaschine als Softproof auf dem Bildschirm und zertifiziert nicht, dass das gedruckte Ergebnis innerhalb einer Toleranz mit einem beabsichtigten Farbmuster übereinstimmt. Das gehört zu einer farbverwalteten Proofing-Kette und den Menschen, die sie betreiben. Die Engine sorgt dafür, dass die Datei das Richtige sagt; ob das endgültige Gerät es einhält, wird nachgelagert entschieden, vom Gerät, den beteiligten ICC-Profilen und — für PDF/X und PDF/A — von einem Validator, nicht vom Erzeuger.

  • Gerätefarbraum — eine Farbe, die durch die Steuerwerte benannt wird, die ein Gerät empfängt (DeviceRGB, DeviceCMYK, DeviceGray); das Erscheinungsbild hängt vom interpretierenden Gerät ab (ISO 32000-2 §8.6.4).
  • Kalibrierte / ICC-basierte Farbe — Farbe, die über ein eingebettetes ICC-Profil an eine geräteunabhängige Referenz verankert ist, sodass das beabsichtigte Erscheinungsbild über Geräte hinweg reproduzierbar ist (ISO 32000-2 §8.6.5.5).
  • ICC-Profil — eine gemessene Zuordnung zwischen den Zahlen eines bestimmten Geräts und einer geräteunabhängigen Referenz, die dem menschlichen Sehen nahekommt.
  • Rendering-Intent — die Richtlinie für den Umgang mit Farben, die ein Zielgerät nicht reproduzieren kann: auf die nächstgelegene erreichbare Farbe beschneiden oder einen Bereich verschieben, um Farbbeziehungen zu erhalten.
  • Output-Intent — die Deklaration des Dokuments, für welche Ausgabebedingung es vorbereitet wurde, typischerweise über ein eingebettetes ICC-Zielprofil (ISO 32000-2 §14.11.5); von PDF/X verlangt und von PDF/A verwendet.
  • PDF/X — die Druckaustausch-Profilfamilie ISO 15930 des PDF; eine PDF/X-Datei muss einen Output-Intent tragen, der ihre Ziel-Druckbedingung benennt.