CreatePdfLittleCmsColourTransform 為原始 Gray、RGB、CMYK 與 ICCBased 分量緩衝區,以及文件色彩轉換輔助功能實作 IPdfColourTransform
請提供明確的程式庫絕對路徑,架構必須符合程序;原生程式庫必須匯出 LittleCMS 2 的 cdecl API,附帶的建置輔助工具會從 MIT 授權的 LittleCMS 2.19 原始碼產生此 ABI
使用 Microsoft stdcall 建置設定的 DLL 與 Win32 提供者不相容;無法單憑未修飾的匯出名稱可靠判斷呼叫慣例
TryCreatePdfLittleCmsColourTransform 傳回相依項目診斷,失敗時將轉換介面維持為 nil,不會變更程序搜尋路徑
每次呼叫各自擁有原生 Context、色彩描述檔與轉換物件;提供者可以共用,但呼叫端必須在整次呼叫期間保持樣本緩衝區不變
緩衝區包含緊密排列的完整像素,使用 1、3 或 4 個分量,以及原生位元組順序的 8-bit 位元組或 16-bit 無號字組;PDF 大端序影像樣本由文件輔助功能在呼叫提供者之前轉換
未指定色彩描述檔的 DeviceRGB 使用 sRGB,DeviceGray 使用 D50 gamma-2.2 描述檔;DeviceCMYK 與 ICCBased 必須明確提供來源 ICC 描述檔,每個描述檔的資料色彩空間也必須符合宣告的分量數
目標為 DeviceGray、DeviceRGB 或 DeviceCMYK,並搭配相符的 ICC 描述檔;只有提供者預設的 Gray 與 RGB 可省略目標描述檔
Default 採用相對色度轉換意圖、黑點補償、256 MiB 樣本位元組及 16 MiB ICC 描述檔位元組;描述檔的硬性上限為 16 MiB
在原生設定前後,以及每個最多 65,536 像素的區塊之間檢查取消狀態;原生描述檔開啟與單一轉換區塊沒有取消 Callback
轉換失敗會清空目標緩衝區並拋出 EPdfColourBackendError;取消操作保留 EPdfOperationCancelled
已在 Win32 與 Win64 上,以 Delphi 和 FPC 驗證實際 LittleCMS 2.19 轉換,以及 PDF 儲存/重新開啟/繪製測試案例
type
EPdfColourBackendError = class(EPdfProduction);
TPdfLittleCmsOptions = record
RenderingIntent: Cardinal;
BlackPointCompensation: Boolean;
MaxSampleBytes: Integer;
MaxProfileBytes: Integer;
CancellationToken: IPdfCancellationToken;
class function Default: TPdfLittleCmsOptions; static;
end;
function CreatePdfLittleCmsColourTransform(const LibraryPath: string;
const Options: TPdfLittleCmsOptions): IPdfColourTransform;
function TryCreatePdfLittleCmsColourTransform(const LibraryPath: string;
const Options: TPdfLittleCmsOptions; out Transform: IPdfColourTransform;
out ErrorText: string): Boolean;
function CreatePdfLittleCmsGrayProfile(const LibraryPath: string;
Gamma: Double = 2.2): TBytes;
function CreatePdfLittleCmsSrgbProfile(const LibraryPath: string): TBytes;
CreatePdfLittleCmsGrayProfile 接受 0.1 到 10 之間的有限 gamma 值;兩個描述檔輔助函式都會序列化真正的原生 ICC 描述檔,供內嵌或重複使用
pwsh Native/ColourLittleCms/Build-LittleCms.ps1 -SourceDirectory C:/deps/lcms2.19 -OutputDirectory C:/deps/lcms-bin -Platform Win64
輔助工具需要相容的 MinGW GCC 與現有 LittleCMS 2.19 原始碼 checkout,會將適用的原生授權聲明複製到輸出目錄,不會下載或安裝相依項目