CreatePdfLittleCmsColourTransform は、元の Gray、RGB、CMYK、ICCBased 成分バッファと文書の色変換ヘルパー向けに IPdfColourTransform を実装します
プロセスのアーキテクチャに合うライブラリの絶対パスを指定してください。ネイティブライブラリは LittleCMS 2 の cdecl API を公開する必要があり、付属のビルドヘルパーは MIT ライセンスの LittleCMS 2.19 ソースからこの ABI を生成します
Microsoft の stdcall ビルド設定を使った DLL は Win32 プロバイダーと互換性がありません。修飾のないエクスポート名から呼び出し規約を確実に判定することはできません
TryCreatePdfLittleCmsColourTransform は依存関係の診断を返し、失敗時は変換を nil にします。プロセスの検索パスは変更しません
呼び出しごとにネイティブコンテキスト、プロファイル、変換を所有します。プロバイダーは共有できますが、呼び出し中のサンプルバッファは呼び出し側で変更しないでください
バッファは 1、3、4 成分の完全なピクセルを隙間なく格納し、8 ビットのバイトまたはネイティブバイト順の 16 ビット符号なしワードを使います。PDF のビッグエンディアン画像サンプルは文書ヘルパーが変換してからこのプロバイダーに渡します
プロファイルのない DeviceRGB は sRGB、DeviceGray は D50 gamma-2.2 プロファイルを使います。DeviceCMYK と ICCBased には明示的なソース ICC プロファイルが必要で、各プロファイルのデータ色空間は宣言された成分数と一致しなければなりません
出力先は、対応する ICC プロファイルを持つ DeviceGray、DeviceRGB、DeviceCMYK です。出力プロファイルを省略できるのはプロバイダー既定の Gray と RGB だけです
Default は相対的な色域を維持するレンダリングインテント、黒点補正、サンプル 256 MiB、ICC プロファイル 16 MiB を選びます。プロファイル上限は 16 MiB です
キャンセルはネイティブ初期化の前後と、最大 65,536 ピクセルのブロック間で確認します。ネイティブでのプロファイル読み込みや個々の変換ブロックにはキャンセル用 Callback がありません
変換に失敗すると出力バッファを消去して EPdfColourBackendError を送出します。キャンセル時は EPdfOperationCancelled を維持します
実際の LittleCMS 2.19 変換と PDF の保存/再読み込み/描画を、Delphi と FPC の Win32/Win64 で検証済みです
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 ソースチェックアウトが必要です。適用されるネイティブライセンス表記を出力ディレクトリにコピーしますが、依存関係のダウンロードやインストールは行いません