THotPDF.RegisterDeviceN-Methode

 

THotPDF.RegisterDeviceN

THotPDF

 

Übersicht

Deklariert einen PDF 1.3+ DeviceN-Farbraum, der auf N vom Benutzer bereitgestellten Schmuckfarben (ISO 32000-1 8.6.6.5) basiert — Verallgemeinert RegisterSeparation von einem Farbstoff auf viele: Sechsfarbendruck, Metallic-/Fluoreszenzfarben, benutzerdefinierte PDF/X-Farbmischungen oder beliebige N-Kanal-Farbsätze

 

Delphi-Syntax:

function RegisterDeviceN(const ColorantNames: array of AnsiString; const AlternateCS: AnsiString; const TintC1Matrix: array of Extended): AnsiString;

 

C++-Syntax:

AnsiString RegisterDeviceN(const AnsiString* ColorantNames, int ColorantNameCount, const AnsiString& AlternateCS, const Extended* TintC1Matrix, int TintC1MatrixCount);

 

Beschreibung

DeviceN benötigt N Farbton-Operanden in [0..1], einen pro Farbstoff, und berechnet M Ausgabekomponenten in AlternateCS unter Verwendung einer linearen, gewichteten Mischungs-Farbton-Transformation, die HotPDF intern als PostScript-Rechnerfunktion des Typs 4 erstellt — Die Ausgabe für den Kanal m ist die Summe über alle Farbstoffe n von tint[n] * TintC1Matrix[n*M + m], begrenzt auf [0..1] durch die Rendering-Pipeline

 

ColorantNames — Array von N Schmuckfarbennamen — Jeder Eintrag wird als PDF-Name geschrieben; Leerzeichen werden gemäß PDF 1.7 7.3.5 zu #20 maskiert — Der spezielle Name 'None' kennzeichnet einen ungenutzten Farbstoffkanal — Die Namensliste definiert die N Eingangsdimensionen des resultierenden Farbraums

AlternateCS — AlternateCS — 'DeviceGray' (M = 1), 'DeviceRGB' (M = 3) oder 'DeviceCMYK' (M = 4) — Jeder andere Wert löst eine Ausnahme aus

TintC1Matrix — zeilenweises Extended-Array der Größe N * M — Zeile n, Spalte m stellt den Beitrag des Farbstoffs n zum AlternateCS-Kanal m bei voller Stärke (tint[n] = 1.0) dar, während alle anderen Farbtöne bei Null liegen — Die Länge muss genau Length(ColorantNames) * M betragen

 

Rückgabewert: ein automatisch generierter Name (DevN1, DevN2, ...) — Gibt einen leeren String zurück, wenn StrictVersionLock aktiviert ist und die aktive Version unter PDF 1.3 liegt (andernfalls wird die Dokumentversion automatisch auf 1.3 erhöht)

 

Codebeispiel

// DeviceN mit zwei Farbstoffen über DeviceRGB — Farbstoff 0 ('Red') ist reines
// Rot bei voller Stärke, Farbstoff 1 ('Blue') ist reines Blau — Das Mischen
// von (0.5, 0.5) ergibt eine 50/50-Mischung; (1, 1) sättigt sich zu 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;  // Rote Zeile   -> (1, 0, 0)
  Mat[3] := 0.0; Mat[4] := 0.0; Mat[5] := 1.0;  // Blaue Zeile  -> (0, 0, 1)
  CSName := HPDF.RegisterDeviceN(
    ['Red', 'Blue'], 'DeviceRGB', Mat);
  HPDF.CurrentPage.SetFillColorSpace(CSName);
  HPDF.CurrentPage.SetFillColor([0.5, 0.5]);   // Mittleres Lila
  HPDF.CurrentPage.Rectangle(60, 60, 200, 100);
  HPDF.CurrentPage.Fill;
  HPDF.EndDoc;
end;

 

Siehe auch

RegisterSeparation, RegisterLabColorSpace, Version, PDF-Filterunterstützung