CreatePdfLittleCmsColourTransform implementa IPdfColourTransform para buffers de componentes originales Gray, RGB, CMYK e ICCBased y para el helper de conversión de color del documento
Indique una ruta absoluta explícita a una biblioteca cuya arquitectura coincida con la del proceso; la biblioteca nativa debe exportar la API cdecl de LittleCMS 2, y el helper de compilación incluido genera esa ABI a partir del código fuente de LittleCMS 2.19 con licencia MIT
Una DLL compilada con la configuración stdcall de Microsoft es incompatible con el proveedor Win32; los nombres de exports sin decoración no permiten deducir con fiabilidad la convención de llamada
TryCreatePdfLittleCmsColourTransform devuelve un diagnóstico de las dependencias y deja la transformación en nil si falla, sin modificar la ruta de búsqueda del proceso
Cada llamada administra su propio contexto nativo, sus perfiles y su transformación; el proveedor se puede compartir, pero los buffers de muestras deben mantenerse inmutables durante la llamada
Los buffers contienen píxeles completos contiguos de 1, 3 o 4 componentes, con bytes de 8-bit o palabras sin signo de 16-bit en el orden de bytes nativo; antes de llamar al proveedor, el helper del documento convierte las muestras de imagen PDF almacenadas en big-endian
DeviceRGB sin perfil usa sRGB y DeviceGray sin perfil usa un perfil D50 gamma-2.2; DeviceCMYK e ICCBased necesitan un perfil ICC de origen explícito, y el espacio de color de datos de cada perfil debe coincidir con el número de componentes declarado
Los destinos son DeviceGray, DeviceRGB o DeviceCMYK con un perfil ICC compatible; solo se puede omitir el perfil de destino al usar los valores predeterminados Gray y RGB del proveedor
Default selecciona el propósito colorimétrico relativo, compensación de punto negro, 256 MiB de bytes de muestras y 16 MiB de bytes de perfiles ICC; el límite de perfiles no puede superar 16 MiB
La cancelación se comprueba antes y después de la preparación nativa y entre bloques de hasta 65,536 píxeles; la apertura de perfiles nativos y cada bloque individual de transformación no tienen callback de cancelación
Si la transformación falla, se vacía el buffer de destino y se lanza EPdfColourBackendError; la cancelación conserva EPdfOperationCancelled
Las transformaciones reales con LittleCMS 2.19 y los casos de guardado, reapertura y renderizado de PDF se verifican con Delphi y FPC en Win32 y 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 acepta un valor gamma finito de 0.1 a 10; ambos helpers de perfiles serializan perfiles ICC nativos reales para incrustarlos o reutilizarlos
pwsh Native/ColourLittleCms/Build-LittleCms.ps1 -SourceDirectory C:/deps/lcms2.19 -OutputDirectory C:/deps/lcms-bin -Platform Win64
El helper necesita una instalación compatible de MinGW GCC y una copia local existente del código fuente de LittleCMS 2.19; copia los avisos de licencia nativa aplicables al directorio de salida y no descarga ni instala dependencias