Phương thức THotPDF.RegisterDeviceN

 

THotPDF.RegisterDeviceN

THotPDF

 

Đầu trang

Khai báo một không gian màu DeviceN PDF 1.3+ được hỗ trợ bởi N mực spot do người dùng cung cấp (ISO 32000-1 8.6.6.5). Mở rộng RegisterSeparation từ một colorant sang nhiều colorant: in sáu màu, mực kim loại / huỳnh quang, các phối trộn mực PDF/X tùy chỉnh hoặc bất kỳ bộ mực N kênh nào

 

Cú pháp Delphi:

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

 

Cú pháp C++:

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

 

Mô tả

DeviceN nhận N toán hạng tint trong [0..1], một cho mỗi colorant, và tính M thành phần đầu ra trong AlternateCS bằng một phép biến đổi tint pha trộn có trọng số tuyến tính mà HotPDF dựng nội bộ dưới dạng Function Type 4 của bộ tính PostScript. Đầu ra cho kênh m là tổng trên mọi colorant n của tint[n] * TintC1Matrix[n*M + m], rồi được pipeline dựng hình kẹp về [0..1]

 

ColorantNames - mảng N tên mực. Mỗi mục được ghi dưới dạng tên PDF; khoảng trắng được thoát thành #20 theo PDF 1.7 7.3.5. Tên đặc biệt 'None' đánh dấu một vị trí colorant không dùng. Danh sách tên xác định N chiều đầu vào của không gian màu kết quả

AlternateCS - 'DeviceGray' (M = 1), 'DeviceRGB' (M = 3) hoặc 'DeviceCMYK' (M = 4). Mọi giá trị khác đều gây ra ngoại lệ

TintC1Matrix - mảng Extended theo thứ tự hàng chính N * M. Hàng n cột m là phần đóng góp của colorant n vào kênh m của AlternateCS ở cường độ đầy đủ (tint[n] = 1.0) khi mọi tint khác bằng 0. Độ dài phải đúng bằng Length(ColorantNames) * M

 

Giá trị trả về: một tên được tạo tự động (DevN1, DevN2, ...). Trả về chuỗi rỗng khi StrictVersionLock bật và Version hiện tại thấp hơn PDF 1.3, nếu không thì phiên bản tài liệu tự nâng lên 1.3

 

Ví dụ mã

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

 

Xem thêm

RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support