PDFium Delphi Component Docs

Volitelný provider ICC transformací LittleCMS 2

CreatePdfLittleCmsColourTransform implementuje IPdfColourTransform pro původní buffery komponent Gray, RGB, CMYK a ICCBased a helper převodu barev dokumentu

Zadejte explicitní absolutní cestu ke knihovně stejné architektury jako proces; nativní knihovna musí exportovat API LittleCMS 2 s cdecl. Přiložený build helper vytváří toto ABI ze zdrojů LittleCMS 2.19 s licencí MIT

DLL sestavená s konfigurací Microsoft stdcall není kompatibilní s providerem Win32; z nedekorovaných exportovaných názvů nelze spolehlivě určit konvenci volání

TryCreatePdfLittleCmsColourTransform vrací diagnostiku závislostí a při chybě ponechá transformaci nil, aniž mění vyhledávací cestu procesu

Každé volání vlastní svůj nativní kontext, profily i transformaci; provider lze sdílet, ale volající nesmí po dobu volání měnit buffery vzorků

Buffery obsahují těsně zabalené celé pixely s 1, 3 nebo 4 komponentami a 8bitovými bajty nebo 16bitovými unsigned slovy v nativním pořadí bajtů; obrazové vzorky PDF v big-endian pořadí převede helper dokumentu před voláním provideru

DeviceRGB bez profilu používá sRGB a DeviceGray bez profilu profil D50 s gamma 2.2; DeviceCMYK a ICCBased vyžadují explicitní zdrojový ICC profil a barevný prostor dat každého profilu musí odpovídat deklarovanému počtu komponent

Cílem je DeviceGray, DeviceRGB nebo DeviceCMYK s odpovídajícím ICC profilem; vynechání cílového profilu je podporováno pouze pro výchozí Gray a RGB tohoto provideru

Default volí relativní kolorimetrický intent, kompenzaci černého bodu, 256 MiB vzorků a 16 MiB ICC profilu; limit profilu má horní hranici 16 MiB

Zrušení se kontroluje před nativním nastavením, po něm a mezi bloky nejvýše 65,536 pixelů; nativní otevření profilu ani jednotlivý blok transformace nemají cancellation Callback

Neúspěšná transformace vyprázdní cílový buffer a vyvolá EPdfColourBackendError; při zrušení zůstane zachována EPdfOperationCancelled

Skutečné transformace LittleCMS 2.19 a testovací PDF pro uložení, opětovné otevření a vykreslení jsou ověřené v Delphi i FPC na Win32 a Win64

Veřejné deklarace

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 přijímá konečnou gamma od 0.1 do 10; oba helpery profilů serializují skutečné nativní ICC profily pro vložení nebo další použití

Sestavení volitelné nativní knihovny

pwsh Native/ColourLittleCms/Build-LittleCms.ps1 -SourceDirectory C:/deps/lcms2.19 -OutputDirectory C:/deps/lcms-bin -Platform Win64

Helper vyžaduje kompatibilní instalaci MinGW GCC a existující checkout zdrojů LittleCMS 2.19, kopíruje příslušné nativní licenční poznámky do výstupního adresáře a nestahuje ani neinstaluje závislosti