|
Deklarerer et PDF 1.3+-DeviceN-fargerom basert på N spotfarger levert av brukeren (ISO 32000-1 8.6.6.5). Dette generaliserer RegisterSeparation fra én fargeant til mange: sekssfargetrykk, metalliske / fluorescerende blekk, egendefinerte PDF/X-blekkblandinger eller et hvilket som helst N-kanals blekksystem.
Delphi-syntaks:
function RegisterDeviceN(const ColorantNames: array of AnsiString; const AlternateCS: AnsiString; const TintC1Matrix: array of Extended): AnsiString;
C++-syntaks:
AnsiString RegisterDeviceN(const AnsiString* ColorantNames, int ColorantNameCount, const AnsiString& AlternateCS, const Extended* TintC1Matrix, int TintC1MatrixCount);
Beskrivelse
DeviceN tar N tint-operandar i [0..1], én per fargestoff, og beregner M ut-komponenter i AlternateCS ved hjelp av en lineær vektet blandingstransformasjon som HotPDF bygger internt som en PostScript-kalkulator av type 4. Utgangen for kanal m er summen over alle fargestoffer n av tint[n] * TintC1Matrix[n*M + m], klippet til [0..1] av gjengivelsespipelinen
ColorantNames - matrise med N blekknavn. Hvert element skrives som et PDF-navn; mellomrom erstattes med #20 i henhold til PDF 1.7 7.3.5. Det spesielle navnet 'None' markerer en ubrukt fargestoffplass. Navnelisten definerer de N inngangsdimensjonene til det resulterende fargerommet
AlternateCS - 'DeviceGray' (M = 1), 'DeviceRGB' (M = 3) eller 'DeviceCMYK' (M = 4). Alle andre verdier utløser et unntak
TintC1Matrix - radmajorert N * M Extended-array. Rad n kolonne m er fargestoff n sitt bidrag til AlternateCS-kanal m ved full styrke (tint[n] = 1.0) med alle andre tints satt til null. Lengden må være nøyaktig Length(ColorantNames) * M
Returverdi: et automatisk generert navn (DevN1, DevN2, ...). Returnerer en tom streng når StrictVersionLock er på og aktiv Version er lavere enn PDF 1.3, ellers heves dokumentversjonen automatisk til 1.3
Kodeeksempel
// 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 også
RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support
|