THotPDF.RegisterDeviceN - metodă

 

THotPDF.RegisterDeviceN

THotPDF

 

Sus

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