RecolorDocument

Цвет

Описание

Переводит каждую страницу документа в одно цветовое пространство

Синтаксис

Delphi

Function TPDFlib.RecolorDocument(TargetSpace: Integer): Integer;

Параметры

TargetSpace1 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');

См. также

RecolorPage, SetFillColor, SetFillColorCMYK