PDFium Delphi Component Docs

Belge ICC renk dönüştürme

ConvertPdfDocumentColours, etkin PDF revizyonunu okur, özgün bileşen işlenenlerini ve görüntü örneklerini bir IPdfColourTransform üzerinden dönüştürür ve ayrı bir çıkış akışına tutarlı bir revizyon ekler

DeviceGray, DeviceRGB, DeviceCMYK ve ICCBased uzaylarında metin ve vektör dolgu/kontur operatörlerini, devralınan sayfa kaynaklarını, adlandırılmış varsayılan renk uzayı takma adlarını, iç içe Form XObject'leri ve 8 veya 16 bit bileşenli ham ya da genel filtreli görüntüleri destekler

İçerik dizileri, akışlar arasında bir boşlukla tek bir işlenen ayrıştırıcıyı ve grafik durum yığınını paylaşır; q/Q, renk uzayı varsayılanları ve bileşen sayıları, dönüşüm boyunca özgün kaynak uzaylarına bağlı kalır

CMYK işlenenleri, asla işlenmiş RGB okuyucularından değil PDF içerik ve görüntü akışlarından gelir; profilsiz DeviceCMYK kaynakları için DeviceCMYKProfile sağlayın

Kaynak ICCBased profilleri özgün kaynak kapsamlarından çözümlenir; yalnızca yok olan veya varsayılan /Range [0 1 ...] desteklenir, görüntü /Decode dizileri ise dönüşümden önce uygulanır ve dönüştürülen görüntüden kaldırılır

Görüntüler, 16 bitlik örnekler için PDF büyük uçlu sırayı korur; kesin bayt geometrisi ve hedef genişletme örnek tahsisi öncesinde denetlenir ve stride veya dolgu baytları uydurulmaz

PreserveAllSpotColours varsayılan true değerindedir; aksi halde PreservedSpotColours ögesini çözülmüş PDF renklendirici adlarıyla doldurun ve Separation veya DeviceN uzayı yalnızca listelenen her renklendirici seçildiğinde korunur

Korunan spot operatörleri, ton işlevleri ve kaynaklar olduğu gibi kalır; seçilmemiş spotlar özel bir dönüşüm arka ucu gerektirir ve desteklenmeyen olarak raporlanır

Görüntü şablon maskeleri ve başvurulan maske verileri olduğu gibi kalır; renk anahtarlı maskeler, açık maskeler ve yumuşak maske mat bileşenleri ayrı ilkeler gerektirir

Desteklenmeyen sınırlar arasında özgün bileşen kod çözücüsü olmayan DCT/JPX görüntüleri, 1/2/4 bit görüntüler ve bunların satır dolgusu, varsayılan olmayan ICC aralıkları, Indexed/Cal/Lab/Pattern uzayları, satır içi görüntüler, gölgeleme işlevleri, Type3 glif programları, açıklama sözlüğü renkleri, form varsayılan görünüm yönergeleri, XFA renk içeriği, saydamlık grupları, olağan dışı harmanlama, overprint ile grafik aktarım işlevleri veya işleme niyetleri bulunur

Kendi kaynaklarına sahip formlar, çıplak sc/scn işlenenlerinden önce renk uzaylarını kurmalıdır; devralınan kaynak bağlamı farklı olan paylaşılan formlar veya görüntüler desteklenmeyen olarak raporlanır ve önbelleğe alınan başarısızlıklar her çağıran kapsama yayılır

FailOnUnsupported varsayılan true değerindedir ve başarısızlıkta hedefi korur; false yapmak bağımsız desteklenen güncellemelere izin verir, Complete değerini false yapar ve kısmi bir dönüşüm için asla yeni bir OutputIntent yazmaz

Kısmi bir sonuç, kaynağından mevcut bir OutputIntent'i koruyabilir; OutputIntentWritten özellikle bu işlemin yeni bir hedef bildirimi kurup kurmadığını raporlar

Eksiksiz bir sonuç, sağlanan hedef ICC profilini gömer ve istenen tanımlayıcıyla bir OutputIntent yazar; bu, PDF/X, PDF/A veya başka bir uygunluk düzeyini sertifikalandırmaz

Kaynak ve hedef farklı akışlar olmalıdır; kaynak konumu geri yüklenir, hazırlık başarısızlıkları hedefi değiştirmeden bırakır ve iptal EPdfOperationCancelled değerini korur

Hazırlanan sonucu yayımlamak, hedefi akış API'si üzerinden değiştirir; hedefi kırparken veya yazarken oluşan bir özel durum kısmi çıktı bırakabilir, bu yüzden atomik dosya yayımlamaya ihtiyaç duyan çağırıcılar geçici bir dosyaya yazmalı ve başarıdan sonra yeniden adlandırmalıdır

Şifreleme ve mevcut imzalar, ayrıca hazırlanmış şifrelenmemiş, imzasız bir kaynak gerektirir; artımlı renk dönüşümü imza geçerliliğini korumaz

Varsayılanlar, aktif nesne okuyucu bütçelerine ek olarak çözülmüş içerik/görüntü akışı başına 64 MiB, çıkış aşamalandırması için 512 MiB, 10.000 sorun raporu ve 64 derinliğe izin verir

Çıkış bütçesi, her güncellemeyi biriktirmeden önce kaynak baytlarını, aşamalandırılmış değiştirme nesnelerini ve ayrılmış xref/trailer yükünü ihtiyatlı biçimde kapsar; eksiksiz trailer uzunluğu serileştirmeden önce dahil edilir ve sınırlı bir çıkış akışı, mantıksal boyutunu büyütmeden önce sınırı aşan yazmaları reddeder

Bu, tüm işlem belleğini veya bellek ayırıcının kapasite yuvarlamasını değil mantıksal çıkış aşamalandırmasını sınırlar ve son serileştirilmiş boyut yayımlamadan önce yeniden denetlenir

Gerçek RGB, CMYK ve ICCBased görüntü dönüşümü, metin/vektör dönüşümü, iç içe formlar, Separation ve DeviceN korunumu, OutputIntent, sıkıştırılmış nesne akışları ile PDF kaydetme/yeniden açma/işleme, Delphi ve FPC ile Win32 ve Win64 üzerinde doğrulanır

Example

ProviderOptions := TPdfLittleCmsOptions.Default;
Provider := CreatePdfLittleCmsColourTransform(LibraryPath, ProviderOptions);
Options := TPdfDocumentColourOptions.Default;
Options.DeviceCMYKProfile := SourceCmykProfile;
TargetProfile := CreatePdfLittleCmsGrayProfile(LibraryPath);
if not ConvertPdfDocumentColours(Source, Destination, pcsDeviceGray,
  TargetProfile, Provider, Options, Report, CancellationToken) then
  raise Exception.Create(Report.ErrorText);

Public declarations

type
  TPdfSpotColourNames = array of AnsiString;
  TPdfDocumentColourOptions = record
    ReadOptions: TPdfActiveObjectReadOptions;
    MaxDecodedStreamBytes: Integer;
    MaxOutputBytes: Int64;
    MaxIssues: Integer;
    MaxDepth: Integer;
    FailOnUnsupported: Boolean;
    PreserveAllSpotColours: Boolean;
    PreservedSpotColours: TPdfSpotColourNames;
    DeviceGrayProfile, DeviceRGBProfile, DeviceCMYKProfile: TBytes;
    OutputIntentIdentifier: string;
    class function Default: TPdfDocumentColourOptions; static;
  end;
  TPdfDocumentColourIssue = record
    ObjectNumber: Integer;
    Reason: string;
  end;
  TPdfDocumentColourIssues = array of TPdfDocumentColourIssue;
  TPdfDocumentColourReport = record
    Succeeded: Boolean;
    Complete: Boolean;
    ContentStreamsConverted, FormsConverted, ImagesConverted: Integer;
    ColourOperatorsConverted, PreservedSpotSelections, PreservedMasks: Integer;
    UnsupportedCount: Integer;
    OutputIntentWritten: Boolean;
    Issues: TPdfDocumentColourIssues;
    ErrorText: string;
  end;

function ConvertPdfDocumentColours(Source, Destination: TStream;
  TargetSpace: TPdfColourSpace; const TargetProfile: TBytes;
  Transform: IPdfColourTransform; const Options: TPdfDocumentColourOptions;
  out Report: TPdfDocumentColourReport;
  CancellationToken: IPdfCancellationToken = nil): Boolean;