|
Declară un spațiu de culoare DeviceN pentru PDF 1.3+ susținut de N cerneluri spot furnizate de utilizator (ISO 32000-1 8.6.6.5). Generalizează RegisterSeparation de la un singur colorant la mai multe: imprimare în șase culori, cerneluri metalice sau fluorescente, amestecuri de cerneală PDF/X personalizate ori orice set de cerneală pe canal N
Sintaxă Delphi:
function RegisterDeviceN(const ColorantNames: array of AnsiString; const AlternateCS: AnsiString; const TintC1Matrix: array of Extended): AnsiString;
Sintaxă C++:
AnsiString RegisterDeviceN(const AnsiString* ColorantNames, int ColorantNameCount, const AnsiString& AlternateCS, const Extended* TintC1Matrix, int TintC1MatrixCount);
Descriere
DeviceN ia N operanzi de nuanță în [0..1], câte unul pentru fiecare colorant, și calculează M componente de ieșire în AlternateCS folosind o transformare de nuanță liniară cu amestec ponderat pe care HotPDF o construiește intern ca Function Type 4 de tip calculator PostScript. Ieșirea pentru canalul m este suma tuturor coloranților n a expresiei tint[n] * TintC1Matrix[n*M + m], limitată la [0..1] de pipeline-ul de randare
ColorantNames - tablou cu N nume de cerneluri. Fiecare intrare este scrisă ca nume PDF; spațiile sunt escapate la #20 conform PDF 1.7 7.3.5. Numele special 'None' marchează un slot de colorant nefolosit. Lista de nume definește cele N dimensiuni de intrare ale spațiului de culoare rezultat
AlternateCS - 'DeviceGray' (M = 1), 'DeviceRGB' (M = 3) sau 'DeviceCMYK' (M = 4). Orice altă valoare produce o excepție
TintC1Matrix - tablou Extended N * M în ordine pe rânduri. Rândul n coloana m reprezintă contribuția colorantului n la canalul m din AlternateCS la putere maximă (tint[n] = 1.0) cu toate celelalte nuanțe la zero. Lungimea trebuie să fie exact Length(ColorantNames) * M
Valoare returnată: un nume generat automat (DevN1, DevN2, ...). Returnează un șir gol când StrictVersionLock este activ și Version curentă este sub PDF 1.3, altfel versiunea documentului crește automat la 1.3
Exemplu de cod
// Two-colorant DeviceN over DeviceRGB. Colorant 0 ('Red') is pure
// red at full strength, colorant 1 ('Blue') is pure blue. Mixing
// (0.5, 0.5) yields a 50/50 blend; (1, 1) saturates to magenta
var
CSName: AnsiString;
Mat: array[0..5] of Extended;
begin
HPDF.Version := pdf14;
HPDF.BeginDoc;
Mat[0] := 1.0; Mat[1] := 0.0; Mat[2] := 0.0; // Red row -> (1, 0, 0)
Mat[3] := 0.0; Mat[4] := 0.0; Mat[5] := 1.0; // Blue row -> (0, 0, 1)
CSName := HPDF.RegisterDeviceN(
['Red', 'Blue'], 'DeviceRGB', Mat);
HPDF.CurrentPage.SetFillColorSpace(CSName);
HPDF.CurrentPage.SetFillColor([0.5, 0.5]); // mid-purple
HPDF.CurrentPage.Rectangle(60, 60, 200, 100);
HPDF.CurrentPage.Fill;
HPDF.EndDoc;
end;
Vezi și
RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support
|