PDFium Delphi Component Docs

선택적으로 사용하는 LittleCMS 2 ICC 변환 프로바이더

CreatePdfLittleCmsColourTransform은 원본 Gray, RGB, CMYK, ICCBased 성분 버퍼와 문서 색상 변환 헬퍼를 위한 IPdfColourTransform을 구현합니다

프로세스 아키텍처에 맞는 라이브러리의 절대 경로를 지정하세요. 네이티브 라이브러리는 LittleCMS 2의 cdecl API를 내보내야 하며 제공된 빌드 헬퍼는 MIT 라이선스의 LittleCMS 2.19 소스로 이 ABI를 만듭니다

Microsoft stdcall 빌드 설정을 사용한 DLL은 Win32 프로바이더와 호환되지 않습니다. 장식되지 않은 export 이름만으로 호출 규약을 확실하게 알아낼 수는 없습니다

TryCreatePdfLittleCmsColourTransform은 의존성 진단을 반환하고 실패 시 변환을 nil로 둡니다. 프로세스의 검색 경로는 변경하지 않습니다

호출마다 자체 네이티브 컨텍스트, 프로파일, 변환을 소유합니다. 프로바이더는 공유할 수 있지만 호출 중에는 호출자가 샘플 버퍼를 변경하지 않아야 합니다

버퍼에는 1, 3, 4성분의 완전한 픽셀이 빈틈없이 들어갑니다. 8비트 바이트 또는 네이티브 바이트 순서의 16비트 부호 없는 워드를 사용하며 PDF의 빅엔디언 이미지 샘플은 문서 헬퍼가 변환한 뒤 전달합니다

프로파일 없는 DeviceRGB는 sRGB, DeviceGray는 D50 gamma-2.2 프로파일을 사용합니다. DeviceCMYK와 ICCBased에는 명시적인 원본 ICC 프로파일이 필요하며 모든 프로파일의 데이터 색 공간이 선언된 성분 수와 일치해야 합니다

출력은 대응하는 ICC 프로파일을 가진 DeviceGray, DeviceRGB, DeviceCMYK입니다. 출력 프로파일 생략은 프로바이더의 기본 Gray와 RGB에만 허용됩니다

Default는 상대적 색도 렌더링 의도, 검은점 보정, 샘플 256 MiB, ICC 프로파일 16 MiB를 선택합니다. 프로파일 상한은 16 MiB입니다

네이티브 설정 전후와 최대 65,536픽셀 블록 사이에서 취소를 확인합니다. 네이티브 프로파일 열기와 개별 변환 블록에는 취소 Callback이 없습니다

변환 실패 시 출력 버퍼를 비우고 EPdfColourBackendError를 발생시킵니다. 취소는 EPdfOperationCancelled를 유지합니다

실제 LittleCMS 2.19 변환과 PDF 저장/재열기/렌더링을 Delphi와 FPC의 Win32/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은 0.1부터 10까지의 유한한 gamma를 받습니다. 두 프로파일 헬퍼 모두 삽입하거나 재사용할 수 있는 실제 네이티브 ICC 프로파일을 직렬화합니다

선택적 네이티브 라이브러리 빌드

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

헬퍼에는 호환되는 MinGW GCC와 기존 LittleCMS 2.19 소스 체크아웃이 필요합니다. 해당 네이티브 라이선스 고지를 출력 디렉터리에 복사하지만 의존성을 다운로드하거나 설치하지는 않습니다