PDFium Delphi Component Docs

Proveedor opcional de transformaciones ICC con LittleCMS 2

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

Declaraciones públicas

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

Compilación de la biblioteca nativa opcional

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