THotPDF.RegisterDeviceN Method

 

THotPDF.RegisterDeviceN

THotPDF

 

ด้านบน

ประกาศขอบเขตสี DeviceN สำหรับ PDF 1.3+ ที่รองรับโดยหมึกพิมพ์พิเศษ N สีที่ผู้ใช้กำหนด (ISO 32000-1 8.6.6.5) เป็นการขยายขอบเขตการใช้งานของ RegisterSeparation จากสารสีเดียวไปยังสารสีจำนวนมาก ได้แก่ การพิมพ์หกสี, หมึกสีเมทัลลิก / สีเรืองแสง, การผสมหมึกแบบกำหนดเองของ PDF/X หรือชุดหมึก N ช่องสัญญาณใดๆ

 

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

 

คำอธิบาย

DeviceN รับตัวถูกดำเนินการโทนสี N ตัวใน [0..1] หนึ่งตัวต่อสารสี และคำนวณส่วนประกอบเอาต์พุต M ตัวใน AlternateCS โดยใช้การแปลงโทนสีแบบผสมน้ำหนักเชิงเส้นที่ HotPDF สร้างขึ้นภายในเป็นฟังก์ชันเครื่องคำนวณ PostScript ประเภทที่ 4 เอาต์พุตสำหรับช่องสัญญาณ m คือผลรวมของสารสีทั้งหมด n ของ tint[n] * TintC1Matrix[n*M + m] ซึ่งถูกจำกัดให้อยู่ใน [0..1] โดยไปป์ไลน์การแสดงผล

 

ColorantNames - อาร์เรย์ของชื่อหมึก N ชื่อ แต่ละรายการถูกเขียนเป็นชื่อ PDF ช่องว่างจะถูกแปลงเป็นรหัสหลีก #20 ตาม PDF 1.7 7.3.5 ชื่อพิเศษ 'None' จะทำเครื่องหมายช่องสารสีที่ไม่ได้ใช้งาน รายชื่อจะกำหนดมิติข้อมูลเข้า N มิติของขอบเขตสีที่ได้รับ

AlternateCS - 'DeviceGray' (M = 1), 'DeviceRGB' (M = 3) หรือ 'DeviceCMYK' (M = 4) ค่าอื่นใดจะทำให้เกิดข้อยกเว้น

TintC1Matrix - อาร์เรย์ Extended ขนาด N * M แบบแถวหลัก แถว n คอลัมน์ m คือส่วนร่วมของสารสี n ต่อช่องสัญญาณ AlternateCS m ที่ความแรงสูงสุด (tint[n] = 1.0) โดยที่โทนสีอื่นๆ ทั้งหมดเป็นศูนย์ ความยาวต้องเท่ากับ Length(ColorantNames) * M พอดี

 

ค่าที่ส่งกลับ: ชื่อที่สร้างขึ้นโดยอัตโนมัติ (DevN1, DevN2, ...) ส่งคืนสตริงว่างเมื่อ StrictVersionLock เปิดอยู่ และ Version ที่ใช้งานอยู่ต่ำกว่า PDF 1.3 (มิฉะนั้นเวอร์ชันเอกสารจะเลื่อนขึ้นเป็น 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;

 

ดูเพิ่มเติม

RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support