THotPDF.RegisterLabColorSpace Method

 

THotPDF.RegisterLabColorSpace

THotPDF

 

顶部

以自动生成的资源名(Lab1、Lab2 …)注册 PDF 1.3 CIELab 色彩空间(ISO 32000-1 8.6.5.3)。把返回的名称与 THPDFPage.SetFillColorSpace / SetStrokeColorSpace 一起使用,随后经 SetFillColor / SetStrokeColor 传入三个 L*a*b* 分量。

 

Delphi 语法:

function RegisterLabColorSpace(WhitePointX, WhitePointY, WhitePointZ: Single; RangeAMin, RangeAMax, RangeBMin, RangeBMax: Single): AnsiString;

 

C++ 语法:

AnsiString RegisterLabColorSpace(float WhitePointX, float WhitePointY, float WhitePointZ, float RangeAMin, float RangeAMax, float RangeBMin, float RangeBMax);

 

说明

CIELab 色彩空间以独立于任何显示或打印设备的方式描述颜色:L* 表示 [0..100] 范围的亮度,a* 是绿/红轴,b* 是蓝/黄轴(通常为 [-128..127])。合规的 PDF 查看器使用配置的 WhitePoint 标准光源把 L*a*b* 转换为设备颜色。常见光源:

 

D50  - ICC print standard. WhitePoint = [0.9505, 1.0, 1.089].

D65  - sRGB / display standard. WhitePoint = [0.95047, 1.0, 1.08883].

 

按规范表 64,WhitePoint 的 Y 必须等于 1.0;X 和 Z 必须为正数。四个 Range 参数全部传零时,会回退到规范隐含的默认值 [-100 100 -100 100];传入任何非零组合即可覆盖

 

返回值: 自动生成的资源名(Lab1、Lab2 …)。当 StrictVersionLock 开启且当前 Version 低于 PDF 1.3 时返回空字符串(否则版本自动提升到 1.3)。

 

代码示例

// Register a D50 Lab space for print, paint a magenta swatch
var
  CSName: AnsiString;
begin
  HPDF.Version := pdf14;
  HPDF.BeginDoc;
  CSName := HPDF.RegisterLabColorSpace(
    0.9505, 1.0, 1.089,        // D50 WhitePoint
    -128, 127, -128, 127);     // standard a* and b* range
  HPDF.CurrentPage.SetFillColorSpace(CSName);
  HPDF.CurrentPage.SetFillColor([50.0, 60.0, -50.0]);  // L* a* b*
  HPDF.CurrentPage.Rectangle(60, 60, 200, 100);
  HPDF.CurrentPage.Fill;
  HPDF.EndDoc;
end;

 

另请参阅

Version, Compression, PDF 过滤器支持