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
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
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