Цвет, профили и почему ваш красный — не мой красный
Spec: ISO 32000-2, §8.6ISO 32000-2 §8.6Spec: ISO 15930, PDF/XISO 15930 PDF/X
Цвет в PDF — это не фиксированное ощущение. Это инструкция, и от того, даст ли эта инструкция один и тот же красный на вашем ноутбуке, на телефоне и на печатной машине, полностью зависит, как был описан цвет. Эта страница — о разнице между цветом, который просто сообщает устройству, что делать, и цветом, который говорит, как он должен на самом деле выглядеть.
Почему это важно
Заголовок раздела «Почему это важно»Выберите фирменный красный. Задайте его один раз. Теперь посмотрите на него на дешёвом офисном мониторе, затем на OLED-телефоне в ярко освещённой комнате, затем на оттиске с офсетной машины. Три красных. Иногда три явно разных красных. Никто не менял число; число никогда и не было всей историей.
Для случайного документа это пустяк. Для логотипа, регулируемой этикетки, фотографии в каталоге или записи, которой суждено просуществовать десятилетия, цвет, который смещается, — это дефект. Цена не абстрактна: это допечатка, отклонённая корректура или архив, страницы которого больше не совпадают с оригиналами. Решение — не более удачное число. Это правда о том, что число означает.
Если коротко
Заголовок раздела «Если коротко»- Цвет устройства именует цвет по управляющим значениям, которые получает
устройство, поэтому результат — это всё, что из них сделает данное устройство
(Spec: ISO 32000-2, §8.6.4ISO 32000-2 §8.6.4).
DeviceRGB,DeviceCMYKиDeviceGray— цветовые пространства устройства. Те же числа, другое оборудование, другой цвет. - Калиброванный цвет на основе ICC привязывает эти числа к измеренному, независимому от устройства эталону через встроенный профиль (Spec: ISO 32000-2, §8.6.5.5ISO 32000-2 §8.6.5.5). Теперь документ несёт достаточно информации, чтобы воспроизвести задуманный цвет, а не просто рецепт управляющих значений.
- ICC-профиль — это и есть измеренное отображение: как числа устройства — или числа стандартного цветового пространства либо выходного условия — соотносятся с цветом, который воспринял бы человеческий глаз, привязанные к независимому от устройства соединительному пространству.
- Цель цветопередачи — это политика того, что делать, когда цвет выходит за пределы досягаемости устройства, потому что ни одно устройство не может показать каждый цвет.
- Выходное намерение — это объявление документом заранее того выходного условия, для которого он был подготовлен (Spec: ISO 32000-2, §14.11.5ISO 32000-2 §14.11.5). Печатные (PDF/X) и архивные (PDF/A) рабочие процессы зависят от него.
Как к этому подходит NextPDF
Заголовок раздела «Как к этому подходит NextPDF»Начнём с честной версии проблемы. DeviceRGB не содержит цвета. Он содержит
три числа между 0 и 1 и негласное допущение, что некий экран превратит их в
свет. Два экрана с разной подсветкой, разными панелями и разной калибровкой
превратят те же три числа в заметно разный свет. Это не баг PDF. Это и есть то,
что означает «цвет устройства», и стандарт честен на этот счёт: цветовые
пространства устройства определяются значениями, которые получает устройство, а
не абсолютным внешним видом (Spec: ISO 32000-2, §8.6.4ISO 32000-2 §8.6.4).
Калиброванный цвет закрывает этот разрыв, добавляя эталон. ICC-профиль — это результат характеризации устройства или цветового пространства — монитора, принтера, печатной машины или стандартного пространства вроде sRGB — и записи того, как его исходные числа соотносятся с цветом в независимом от устройства соединительном пространстве, приближающем человеческое зрение. Встройте этот профиль — и числа перестанут быть частным диалектом; они становятся утверждением, привязанным к чему-то, с чем все могут согласиться. Именно это и несёт цветовое пространство на основе ICC (Spec: ISO 32000-2, §8.6.5.5ISO 32000-2 §8.6.5.5): цвет плюс измеренное отображение, которое говорит, что он означает.
Есть и вторая, неизбежная тонкость. Набор цветов, которые может напечатать печатная машина, — не тот набор, который может отобразить телефон, и ни один из них не равен полному набору, который может увидеть человеческий глаз. Когда цвет выходит за пределы того, что может воспроизвести целевое устройство, нужно сделать некий выбор: обрезать его до ближайшего достижимого цвета или сместить целый диапазон цветов вместе, чтобы их отношения остались нетронутыми. Этот выбор — цель цветопередачи — намеренная политика, выбранная под задачу, а не случайность округления. Фотографии и корпоративному логотипу часто нужны разные цели, потому что одной важны плавные градиенты, а другому — попадание в точный образец.
Наконец, документ, который направляется куда-то конкретно, может об этом сказать. Выходное намерение — это объявление файлом того выходного условия, для которого он был подготовлен, — обычно встроенным целевым ICC-профилем, именующим условие печати или устройство (Spec: ISO 32000-2, §14.11.5ISO 32000-2 §14.11.5). Это разница между передачей принтеру файла и передачей ему файла, который говорит: «я был построен для этой печатной машины». Профили обмена для печати делают это обязательным: файл PDF/X (семейство ISO 15930) обязан нести выходное намерение (Spec: ISO 15930, PDF/XISO 15930 PDF/X), а PDF/A полагается на тот же механизм, чтобы зависимые от устройства цвета архивного файла оставались интерпретируемыми далеко в будущем, спустя долгое время после того, как исходная среда исчезла.
- 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).
Задача NextPDF в этой цепочке — быть корректным со стороны стандартов: писать цветовые пространства, встроенные профили и выходные намерения так, как их определяет формат, чтобы нижестоящий инструмент — RIP принтера, валидатор архивного хранения, средство просмотра — прочитал ровно то, что было задумано. Он создаёт объявления; он не претендует на роль устройства.
Практический пример
Заголовок раздела «Практический пример»Набросок ниже показывает решение, а не конкретный API. Суть в том, что место назначения объявлено, а не угадано.
<?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();}Цвета не изменились. Изменилось то, что файл теперь говорит, как они должны были выглядеть, — а это единственное, на что может опереться печатная машина или валидатор.
Распространённое заблуждение
Заголовок раздела «Распространённое заблуждение»«Это то же шестнадцатеричное значение, значит, это тот же цвет». Шестнадцатеричное значение — это набор управляющих значений устройства. Без профиля или выходного намерения это рецепт без указанной кухни — он будет иметь разный вкус в каждой из них. Два файла могут нести одинаковые RGB-числа и быть честно разными цветами, потому что один объявляет контекст, придающий числам смысл, а другой оставляет это на волю случая.
Вторая ловушка: предположение, что DeviceCMYK автоматически означает «готов к
печати». Это не так. CMYK по-прежнему цвет устройства; он сформирован под
печать, но он не калиброван, пока профиль или выходное намерение не назовут
фактическое условие печати.
Ограничения и границы
Заголовок раздела «Ограничения и границы»NextPDF создаёт корректный со стороны стандартов цвет: он пишет цветовые пространства устройства и на основе ICC и объявляет выходные намерения для рабочих процессов в стиле PDF/X и PDF/A так, как их определяет формат. Это производящая половина задачи, и это та половина, которой документ может владеть.
Чем NextPDF не является, так это системой цветопробы. Он не измеряет ваш монитор, не выполняет экранную цветопробу печатной машины и не сертифицирует, что напечатанный результат совпадает с задуманным образцом в пределах допуска. Это относится к цветоуправляемой цепочке цветопробы и людям, которые её ведут. Движок заставляет файл говорить правильную вещь; будет ли финальное устройство её соблюдать, решается далее по цепочке — устройством, задействованными ICC-профилями и — для PDF/X и PDF/A — валидатором, а не производителем.
Связанная документация
Заголовок раздела «Связанная документация»- Что такое PDF на самом деле — объектная модель, внутри которой живут эти цветовые пространства и выходные намерения.
- Архивное хранение и PDF/A — почему долгосрочное сохранение опирается на независимый от устройства цвет и выходные намерения.
- Ландшафт стандартов — где ISO 32000-2, PDF/X (ISO 15930) и PDF/A (ISO 19005) находятся относительно друг друга.
- PDF 2.0: что изменилось — как текущая редакция формата задаёт рамки цвета и соответствия.
Глоссарий
Заголовок раздела «Глоссарий»- Цветовое пространство устройства — цвет, именованный по управляющим
значениям, которые получает устройство (
DeviceRGB,DeviceCMYK,DeviceGray); внешний вид зависит от интерпретирующего устройства (ISO 32000-2 §8.6.4). - Калиброванный / на основе ICC цвет — цвет, привязанный к независимому от устройства эталону через встроенный ICC-профиль, поэтому задуманный внешний вид воспроизводим на разных устройствах (ISO 32000-2 §8.6.5.5).
- ICC-профиль — измеренное отображение между числами конкретного устройства и независимым от устройства эталоном, приближающим человеческое зрение.
- Цель цветопередачи — политика обработки цветов, которые целевое устройство не может воспроизвести: обрезать до ближайшего достижимого цвета или сместить диапазон, чтобы сохранить цветовые отношения.
- Выходное намерение — объявление документом выходного условия, для которого он был подготовлен, обычно через встроенный целевой ICC-профиль (ISO 32000-2 §14.11.5); требуется для PDF/X и используется PDF/A.
- PDF/X — семейство профилей обмена для печати ISO 15930 формата PDF; файл PDF/X обязан нести выходное намерение, именующее целевое условие печати.