RecolorDocument
Цвет
Описание
Переводит каждую страницу документа в одно цветовое пространство
Синтаксис
Delphi
Function TPDFlib.RecolorDocument(TargetSpace: Integer): Integer;Параметры
| TargetSpace | 1 grey, 2 RGB, 3 CMYK. |
|---|
Возвращаемые значения
| Count | Сколько цветов конвертировано по всему документу |
|---|---|
| 0 | Конвертировать было нечего, либо TargetSpace был вне 1–3. Страница, чьи цвета уже в целевом пространстве, сохраняет исходные байты |
Примечания
Преобразование — обычная аппаратная арифметика, а не цветоуправляемая: документ, указывающий только DeviceRGB, не несёт профиля для конвертации. RGB становится серым по весам яркости ITU-R BT.601, CMYK конвертируется как описано в ISO 32000-1 §8.6.4.4 — именно это просмотрщик и делает, показывая CMYK-документ на экране
Цвета из пространств ICCBased, Separation, Indexed или Pattern остаются как есть: читать их составляющие без профиля значило бы изменить вид страницы, а не сохранить его, поэтому конвертируются только части документа, напрямую называющие аппаратное пространство
Конвертируются и изображения, которые рисует страница, — если у изображения 8 бит на компонент, аппаратное цветовое пространство и либо нет сжатия, либо простой Flate. JPEG или факс пришлось бы перекодировать, а это иная операция, чем конвертация цветов, поэтому байты остаются своими
Индексированное изображение конвертируется через свою таблицу цветов, поэтому его сэмплы сохраняют прежние индексы. Этот путь не зависит от упаковки и сжатия сэмплов — потому палитровый скриншот или диаграмма конвертируются, хоть их сэмплы и нельзя переписать напрямую
Градиенты конвертируются вместе с их функциями, поэтому пространство и точки всегда согласованы. Градиент на сэмплированной или PostScript-функции сохраняет собственные цвета, как и типы mesh-затенений, несущие цвета в потоке, а не в функции
Мягкие и трафаретные маски не трогаются: обе читаются как покрытие, а не цвет, и конвертация оставила бы маску на странице картинкой
Геометрия, текст, отсечение и остальные операторы записываются обратно без изменений
Выбранная страница восстанавливается при возврате из вызова
Пример
// Send a mixed-colour document to a press that expects CMYK
PDF.LoadFromFile('brochure.pdf', '');
Converted := PDF.RecolorDocument(3);
PDF.SaveToFile('brochure-cmyk.pdf');