PDFium Delphi Component Docs

Fournisseur optionnel de transformations ICC LittleCMS 2

CreatePdfLittleCmsColourTransform implémente IPdfColourTransform pour les buffers de composantes d’origine Gray, RGB, CMYK et ICCBased et pour l’assistant de conversion des couleurs du document

Indiquez le chemin absolu explicite d’une bibliothèque dont l’architecture correspond au processus ; elle doit exporter l’API LittleCMS 2 cdecl, et l’assistant de compilation fourni produit cette ABI à partir des sources LittleCMS 2.19 sous licence MIT

Une DLL compilée avec la configuration Microsoft stdcall est incompatible avec le fournisseur Win32 ; les noms d’exports non décorés ne permettent pas de déduire sûrement la convention d’appel

TryCreatePdfLittleCmsColourTransform renvoie les diagnostics de dépendances et laisse la transformation à nil en cas d’échec, sans modifier le chemin de recherche du processus

Chaque appel possède son contexte natif, ses profils et sa transformation ; le fournisseur peut être partagé, mais l’appelant doit garder ses buffers d’échantillons immuables pendant l’appel

Les buffers contiennent des pixels complets et contigus à 1, 3 ou 4 composantes, en octets de 8 bits ou mots non signés de 16 bits dans l’ordre natif ; l’assistant du document convertit les échantillons PDF big-endian avant d’appeler ce fournisseur

DeviceRGB sans profil utilise sRGB et DeviceGray sans profil un profil D50 gamma-2.2 ; DeviceCMYK et ICCBased exigent un profil ICC source explicite, dont l’espace de couleurs doit correspondre au nombre de composantes déclaré

Les cibles sont DeviceGray, DeviceRGB ou DeviceCMYK avec un profil ICC adapté ; l’absence de profil cible n’est acceptée que pour les valeurs Gray et RGB par défaut du fournisseur

Default choisit l’intention colorimétrique relative, la compensation du point noir, 256 MiB d’échantillons et 16 MiB de profils ICC ; la limite des profils est plafonnée à 16 MiB

L’annulation est vérifiée avant et après la préparation native et entre des blocs d’au plus 65,536 pixels ; l’ouverture native d’un profil et un bloc de transformation individuel n’ont pas de callback d’annulation

Une transformation qui échoue vide le buffer cible et lève EPdfColourBackendError ; l’annulation conserve EPdfOperationCancelled

Les transformations réelles LittleCMS 2.19 et les cas PDF de sauvegarde/réouverture/rendu sont vérifiés avec Delphi et FPC en Win32 et Win64

Déclarations publiques

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 accepte un gamma fini de 0.1 à 10 ; les deux assistants sérialisent de véritables profils ICC natifs, réutilisables ou intégrables au document

Compiler la bibliothèque native optionnelle

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

L’assistant exige une installation MinGW GCC compatible et un checkout existant des sources LittleCMS 2.19 ; il copie les mentions de licence natives applicables dans le répertoire de sortie et ne télécharge ni n’installe de dépendances