متد THotPDF.RegisterDeviceN

 

THotPDF.RegisterDeviceN

THotPDF

 

بالا

یک فضای رنگ DeviceN در PDF 1.3+ را اعلام می‌کند که بر پایه N جوهر spot ارائه‌شده توسط کاربر است (ISO 32000-1 8.6.6.5). این متد RegisterSeparation را از یک colorant به چند colorant تعمیم می‌دهد: چاپ شش‌رنگ، جوهرهای metallic / fluorescent، مخلوط‌های جوهر سفارشی PDF/X، یا هر مجموعه جوهر N-channel

 

نحو Delphi:

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

 

نحو C++:

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

 

توضیح

DeviceN به ازای هر colorant یک operand tint در [0..1] می‌گیرد و با استفاده از یک tint transform خطی و weighted-blend که HotPDF آن را به‌صورت داخلی به شکل یک Function Type 4 از نوع PostScript-calculator می‌سازد، M مؤلفه خروجی را در AlternateCS محاسبه می‌کند. خروجی برای channel m برابر مجموع همه colorantها n از tint[n] * TintC1Matrix[n*M + m] است که توسط pipeline رندر به [0..1] clamp می‌شود

 

ColorantNames - آرایه‌ای از N نام جوهر. هر ورودی به‌صورت یک PDF name نوشته می‌شود؛ فاصله‌ها طبق PDF 1.7 7.3.5 به #20 escape می‌شوند. نام ویژه 'None' یک slot colorant استفاده‌نشده را مشخص می‌کند. فهرست نام‌ها N بُعد ورودی فضای رنگ حاصل را تعریف می‌کند

AlternateCS - 'DeviceGray' (M = 1)، 'DeviceRGB' (M = 3) یا 'DeviceCMYK' (M = 4). هر مقدار دیگری یک exception ایجاد می‌کند

TintC1Matrix - آرایه Extended به‌صورت row-major با اندازه N * M. سطر n و ستون m سهم colorant n در channel m از AlternateCS را در شدت کامل (tint[n] = 1.0) و با همه tintهای دیگر در صفر مشخص می‌کند. طول باید دقیقاً Length(ColorantNames) * M باشد

 

Return value: یک نام تولیدشده به‌صورت خودکار (DevN1، DevN2، ...). وقتی StrictVersionLock روشن باشد و Version فعال پایین‌تر از PDF 1.3 باشد، یک رشته خالی برمی‌گرداند، وگرنه نسخه سند به‌طور خودکار به 1.3 ارتقا می‌یابد

 

نمونه کد

// 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;

 

See Also

RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support