CreatePdfLittleCmsColourTransform implementiert IPdfColourTransform für originale Gray-, RGB-, CMYK- und ICCBased-Komponentenpuffer und den Helper zur Dokumentfarbkonvertierung
Geben Sie einen expliziten absoluten Bibliothekspfad mit passender Prozessarchitektur an ; die Bibliothek muss die LittleCMS-2-API mit cdecl exportieren ; der mitgelieferte Build-Helper erzeugt diese ABI aus dem MIT-lizenzierten LittleCMS-2.19-Quellcode
Eine DLL mit Microsoft-stdcall-Buildkonfiguration ist mit dem Win32-Provider inkompatibel ; undekorierte Exportnamen erlauben keine verlässliche Bestimmung der Aufrufkonvention
TryCreatePdfLittleCmsColourTransform liefert Abhängigkeitsdiagnosen und lässt die Transformation bei Fehlern nil, ohne den Prozesssuchpfad zu ändern
Jeder Aufruf besitzt seinen nativen Kontext, seine Profile und Transformation ; der Provider kann geteilt werden, die Samplepuffer müssen während des Aufrufs unverändert bleiben
Puffer enthalten dicht gepackte vollständige Pixel mit 1, 3 oder 4 Komponenten als 8-Bit-Bytes oder vorzeichenlose 16-Bit-Wörter in nativer Bytefolge ; PDF-Big-Endian-Bildsamples konvertiert der Dokument-Helper vor dem Aufruf
DeviceRGB ohne Profil verwendet sRGB, DeviceGray ohne Profil ein D50-Gamma-2.2-Profil ; DeviceCMYK und ICCBased benötigen ein explizites Quell-ICC-Profil, dessen Datenfarbraum zur angegebenen Komponentenanzahl passen muss
Ziele sind DeviceGray, DeviceRGB oder DeviceCMYK mit passendem ICC-Profil ; ein fehlendes Zielprofil ist nur für die Gray- und RGB-Standardprofile des Providers zulässig
Default wählt relativ farbmetrische Wiedergabe, Schwarzpunktkompensation, 256 MiB Samplebytes und 16 MiB ICC-Profilbytes ; das Profillimit ist auf 16 MiB begrenzt
Abbruch wird vor und nach der nativen Einrichtung und zwischen Blöcken von höchstens 65,536 Pixeln geprüft ; das native Öffnen von Profilen und einzelne Transformationsblöcke haben keinen Abbruch-Callback
Fehlgeschlagene Transformationen leeren den Zielpuffer und lösen EPdfColourBackendError aus ; Abbruch behält EPdfOperationCancelled bei
Reale LittleCMS-2.19-Transformationen und PDF-Speichern/Wiederöffnen/Rendern sind mit Delphi und FPC unter Win32 und Win64 geprüft
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 akzeptiert ein endliches Gamma von 0.1 bis 10 ; beide Profil-Helper serialisieren echte native ICC-Profile zum Einbetten oder Wiederverwenden
pwsh Native/ColourLittleCms/Build-LittleCms.ps1 -SourceDirectory C:/deps/lcms2.19 -OutputDirectory C:/deps/lcms-bin -Platform Win64
Der Helper benötigt eine kompatible MinGW-GCC-Installation und einen vorhandenen LittleCMS-2.19-Checkout, kopiert die erforderlichen nativen Lizenzhinweise ins Ausgabeverzeichnis und lädt oder installiert keine Abhängigkeiten