PDFium Component Docs

Opcjonalne natywne transformacje kolorów LittleCMS

CreatePdfLittleCmsColourTransform implementuje IPdfColourTransform dla oryginalnych buforów komponentów Gray, RGB, CMYK i ICCBased oraz dla pomocnika konwersji kolorów dokumentu

Podaj jawną absolutną ścieżkę biblioteki, której architektura odpowiada procesowi; biblioteka natywna musi udostępniać API cdecl LittleCMS 2, a dołączony helper budowania produkuje takie ABI z na licencji MIT udostępnionych źródeł LittleCMS 2.19

DLL skonfigurowany w wariancie stdcall Microsoftu jest niekompatybilny z dostawcą Win32; konwencji wywołań nie da się niezawodnie wywnioskować z nieozdobionych nazw eksportów

TryCreatePdfLittleCmsColourTransform zwraca diagnostykę zależności i przy niepowodzeniu zostawia transformację jako nil, nie zmieniając ścieżki wyszukiwania procesu

Każde wywołanie posiada własny kontekst natywny, profile i transformację; dostawca może być współdzielony, ale wywołujący muszą trzymać swoje bufory próbek niemutowalnymi przez czas wywołania

Bufory zawierają ciasno spakowane pełne piksele o 1, 3 lub 4 komponentach i 8-bitowych bajtach lub 16-bitowych słowach bez znaku w natywnej kolejności bajtów; big-endian próbki obrazów PDF konwertuje pomocnik dokumentu przed wywołaniem tego dostawcy

Nieopisany DeviceRGB używa sRGB, a nieopisany DeviceGray profilu D50 gamma-2.2; DeviceCMYK i ICCBased wymagają jawnego źródłowego profilu ICC, a przestrzeń kolorów danych każdego profilu musi odpowiadać zadeklarowanej liczbie komponentów

Cele to DeviceGray, DeviceRGB lub DeviceCMYK z pasującym profilem ICC; brak profilu docelowego jest obsługiwany tylko dla domyślnych profili Gray i RGB dostawcy

Default wybiera względny intent kolorymetryczny, kompensację czerni, 256 MiB bajtów próbek i 16 MiB bajtów profilu ICC; limit profilu jest ograniczony do 16 MiB

Anulowanie jest sprawdzane przed i po konfiguracji natywnej oraz między blokami po co najwyżej 65,536 pikseli; natywne otwieranie profilu i pojedynczy blok transformacji nie mają wywołania zwrotnego anulowania

Nieudane transformacje czyszczą bufor docelowy i podnoszą EPdfColourBackendError; anulowanie zachowuje EPdfOperationCancelled

Rzeczywiste transformacje LittleCMS 2.19 oraz fixture'y zapisu/ponownego otwarcia/renderowania PDF są weryfikowane z Delphi i FPC na Win32 i Win64

Public declarations

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 przyjmuje skończoną wartość gamma od 0.1 do 10; oba helpery profilów serializują prawdziwe natywne profile ICC do osadzenia lub ponownego użycia

Build the optional native library

pwsh Native/ColourLittleCms/Build-LittleCms.ps1 -SourceDirectory C:/deps/lcms2.19 -OutputDirectory C:/deps/lcms-bin -Platform Win64

Helper wymaga zgodnej instalacji MinGW GCC i istniejącego checkoutu źródeł LittleCMS 2.19, kopiuje właściwe noty licencji natywnych do katalogu wyjściowego i nie pobiera ani nie instaluje zależności