|
Declares a PDF 1.3+ DeviceN colour space backed by N user-supplied spot inks (ISO 32000-1 8.6.6.5). Generalises RegisterSeparation from one colorant to many: six-colour printing, metallic / fluorescent inks, custom PDF/X ink mixes, or any N-channel ink set.
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);
Beskrivning
DeviceN tar N tint-operander i [0..1], en per colorant, och beräknar M utdatakomponenter i AlternateCS med en linjär viktad blandningsbaserad tint-transform som HotPDF bygger internt som en PostScript-calculator Function Type 4. Utdata för kanal m är summan över alla colorants n av tint[n] * TintC1Matrix[n*M + m], begränsad till [0..1] av renderingspipelinen
ColorantNames - array med N färgnamn. Varje post skrivs som ett PDF-namn; blanksteg escapade till #20 enligt PDF 1.7 7.3.5. Det särskilda namnet 'None' markerar en oanvänd colorant-plats. Namnlistan definierar de N indatadimensionerna för den resulterande färgrymden
AlternateCS - 'DeviceGray' (M = 1), 'DeviceRGB' (M = 3), or 'DeviceCMYK' (M = 4). Any other value raises an exception.
TintC1Matrix - row-major N * M Extended array. Row n column m is colorant n's contribution to AlternateCS channel m at full strength (tint[n] = 1.0) with all other tints at zero. Length must be exactly Length(ColorantNames) * M.
Returvärde: ett automatiskt genererat namn (DevN1, DevN2, ...). Returnerar en tom sträng när StrictVersionLock är på och aktiv Version är lägre än PDF 1.3 (annars höjs dokumentversionen automatiskt till 1.3)
Code Example
// 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;
Se även
RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support
|