CreatePdfLittleCmsColourTransform implementa IPdfColourTransform per buffer di componenti originali Gray, RGB, CMYK e ICCBased, anche tramite l'helper di conversione dei colori del documento
Fornire un percorso assoluto esplicito a una libreria con la stessa architettura del processo; la libreria nativa deve esportare l'API cdecl di LittleCMS 2 e l'helper di compilazione fornito produce questa ABI dai sorgenti LittleCMS 2.19 con licenza MIT
Una DLL compilata con la configurazione Microsoft stdcall è incompatibile con il provider Win32; non si può dedurre in modo affidabile la convenzione di chiamata dai nomi degli export senza decorazione
TryCreatePdfLittleCmsColourTransform restituisce la diagnostica delle dipendenze e lascia la trasformazione a nil in caso di errore, senza modificare il percorso di ricerca del processo
Ogni chiamata possiede il proprio contesto nativo, i profili e la trasformazione; il provider può essere condiviso, ma i buffer dei campioni devono restare immutabili per tutta la chiamata
I buffer contengono pixel interi contigui con 1, 3 o 4 componenti, in byte a 8 bit o word senza segno a 16 bit nell'ordine nativo; l'helper del documento converte i campioni immagine PDF big-endian prima di invocare il provider
DeviceRGB senza profilo usa sRGB e DeviceGray senza profilo usa un profilo D50 con gamma 2.2; DeviceCMYK e ICCBased richiedono un profilo ICC sorgente esplicito e lo spazio colore dei dati di ogni profilo deve corrispondere al numero di componenti dichiarato
Le destinazioni sono DeviceGray, DeviceRGB o DeviceCMYK con un profilo ICC corrispondente; il profilo di destinazione può essere omesso solo per i valori predefiniti Gray e RGB del provider
Default seleziona l'intento colorimetrico relativo, la compensazione del punto nero, 256 MiB di campioni e 16 MiB di profili ICC; il limite dei profili non può superare 16 MiB
L'annullamento viene controllato prima e dopo la preparazione nativa e tra blocchi di al massimo 65,536 pixel; l'apertura nativa dei profili e la trasformazione di un singolo blocco non prevedono Callback di annullamento
Una trasformazione fallita svuota il buffer di destinazione e solleva EPdfColourBackendError; l'annullamento mantiene EPdfOperationCancelled
Le trasformazioni reali LittleCMS 2.19 e i casi PDF di salvataggio, riapertura e rendering sono verificati con Delphi e FPC su Win32 e 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 accetta un gamma finito da 0.1 a 10; entrambi gli helper dei profili serializzano veri profili ICC nativi da incorporare o riutilizzare
pwsh Native/ColourLittleCms/Build-LittleCms.ps1 -SourceDirectory C:/deps/lcms2.19 -OutputDirectory C:/deps/lcms-bin -Platform Win64
L'helper richiede un'installazione MinGW GCC compatibile e un checkout esistente dei sorgenti LittleCMS 2.19, copia gli avvisi di licenza nativi pertinenti nella directory di output e non scarica né installa dipendenze