PDFium Delphi Component Docs

可選用的 LittleCMS 2 ICC 轉換提供者

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,會將適用的原生授權聲明複製到輸出目錄,不會下載或安裝相依項目