|
Объявляет цветовое пространство Separation в PDF 1.3+ для печатных процессов со spot-цветами (ISO 32000-1 8.6.6.4). Каждый вызов регистрирует одну spot-краску и возвращает автосгенерированное имя цветового пространства (Sep1, Sep2, ...), которое можно использовать с THPDFPage.SetFillColorSpace / SetStrokeColorSpace + SetFillColor([tint]) / SetStrokeColor([tint]).
Синтаксис Delphi:
function RegisterSeparation(const ColorantName: AnsiString; const AlternateCS: AnsiString; const TintC1: array of Extended): AnsiString;
Синтаксис C++:
AnsiString RegisterSeparation(const AnsiString& ColorantName, const AnsiString& AlternateCS, const Extended* TintC1, int TintC1Count);
Описание
Цветовое пространство Separation позволяет PDF ссылаться на spot-краску (например, цвет Pantone) по имени. Совместимые печатные устройства используют реальную краску; экранные ридеры и цифровые превью откатываются к переданному AlternateCS цвету при tint = 1.0, линейно интерполируя к «без краски» при tint = 0.
ColorantName — имя краски, например 'Pantone 185 C'. Пробелы экранируются как #20 в имени в выходном PDF согласно PDF 1.7 7.3.5; других разделительных символов PDF (круглые и квадратные скобки, слэши, знаки процента) лучше избегать.
AlternateCS - 'DeviceGray' (1 компонента), 'DeviceRGB' (3) или 'DeviceCMYK' (4). Любое другое значение возбуждает исключение.
TintC1 — компоненты alternate-CS при полной силе краски (tint = 1.0). Число компонент должно совпадать с AlternateCS; значения в [0..1]. Учтите, что для DeviceGray, принято 0 = чёрный и 1 = белый (наоборот относительно принятого в изображениях по умолчанию BlackIs1).
Возвращаемое значение: автосгенерированное имя (Sep1, Sep2, ...). Возвращает пустую строку, когда StrictVersionLock включён, а активная Версия ниже PDF 1.3 (иначе версия документа автоматически повышается до 1.3).
Пример кода
// Register a Pantone-style spot ink backed by CMYK, paint four tint
// swatches showing the linear progression from no ink to full ink
var
SpotName: AnsiString;
T: Integer;
begin
HPDF.Version := pdf14;
HPDF.BeginDoc;
SpotName := HPDF.RegisterSeparation(
'Pantone 185 C', // ink name (spaces auto-escaped)
'DeviceCMYK', // alternate CS for screen / digital
[0.0, 0.95, 0.75, 0.0]); // CMYK at tint = 1.0
HPDF.CurrentPage.SetFillColorSpace(SpotName);
for T := 1 to 4 do
begin
HPDF.CurrentPage.SetFillColor([T * 0.25]);
HPDF.CurrentPage.Rectangle(60 + (T - 1) * 100, 100, 80, 60);
HPDF.CurrentPage.Fill;
end;
HPDF.EndDoc;
end;
См. также
RegisterDeviceN, RegisterLabColorSpace, Версия, Поддержка фильтров PDF
|