Yüklenmiş PDF'ten PDF/A-4 Raster Dönüşümü

HPDFArchivalConversion, yüklenmiş bir THotPDF belgesinin görünür sayfa içeriğinden, katı native rendering ve verilen sRGB ICC profile'iyle yeni bir PDF/A-4 belgesi oluşturur

Her çıktı sayfası, istenen DPI'da kayıpsız sıkıştırılmış bir RGB raster image içerir; orijinal görünür boyutlar, crop, rotation ve UserUnit çıktı sayfası geometrisine yansıtılır

Gömülü orijinal yazı tipleri, metin operator'leri, vektör path'leri, görseller, OCR katmanları ve görünür anotasyon veya widget görünilmleri hayatta kalmalıysa ayrı metin ve vektör koruyan profili kullanın; raster profili o yapıları korumaz

Giriş noktaları

function HPDFConvertLoadedToPDFA4Raster(Source: THotPDF;
  Destination: TStream; const SRGBProfile: TBytes;
  const Options: THPDFArchivalConversionOptions;
  out Report: THPDFArchivalConversionReport): Boolean;

function HPDFConvertLoadedToPDFA4RasterFile(Source: THotPDF;
  const TargetFileName: string; const SRGBProfile: TBytes;
  const Options: THPDFArchivalConversionOptions;
  out Report: THPDFArchivalConversionReport): Boolean;

Önce kaynağı yükleyin ve caller'a ait input stream'i, kaynak belge yok edilene kadar canlı tutun

Sıradan arşiv yayınlaması için file entry point'i kullanın: hedef dizinde exclusive bir geçici dosya oluşturmadan önce mevcut hedefi kaynak takma adlarına karşı yoklar, dönüşümün tamamını doğrular, dosyayı flush eder ve hedefi MOVEFILE_REPLACE_EXISTING ve MOVEFILE_WRITE_THROUGH ile MoveFileEx üzerinden değiştirir

Dönüşüm, rendering, doğrulama, iptal ve yayınlama hataları mevcut hedef dosyayı korur ve geçici çıktıyı kaldırır

Stream entry point, sıfır konumunda boş ve seekable bir destination ister ve girdinin bilinen takma adlarını IsLoadedSourceStreamAlias üzerinden reddeder; baytları yalnızca hazırlanan çıktının tamamı native doğrulamayı geçtikten sonra yayınlar

Destination yazma hatası, en iyi çabayla boş bir stream'e sıfırlama tetikler; ancak keyfi bir device veya custom stream bu sıfırlamayı reddedip kısmi yazıyı koruyabilir — dosya yayınlamasının atomik olması gerektiğinde file entry point'i kullanın

Seçenekler ve kaynak sınırları

SeçenekVarsayılanAnlam
DPI150İstenen fiziksel çözünürlük, kabul edilen aralık 36 ila 1200
MaxPages1000Yüklenmiş kaynak sayfa sayısı üst sınırı
MaxPixelsPerPage40,000,000Sayfa pikseli ve tekil source-image pikseli üst sınırı
MaxTotalPixels500,000,000Birikmiş çıktı raster pikseli üst sınırı
MaxRasterBytes256 MiBSayfa veya source-image raster tahsisi üst sınırı, piksel başına dört bayt varsayılarak ihtiyatla denetlenir
MaxOutputBytes256 MiBHazırlanan PDF boyutu üst sınırı, stream tahsisinden ve yazmalardan önce uygulanır
MaxDecodedStreamBytes64 MiBHer filter zincirini, sayfa başına birleşik content preflight'ı, tekil native stream-read callback'lerini, tekil kodlanmış source-image stream'lerini ve native çıktı doğrulayıcısını sınırlar
MaxTotalDecodedBytes256 MiBDönüşüm boyunca ek native filtered-decoder işini, sayfalar arası birleşik content preflight'ı ve sayfalar arası birikmiş native stream-read callback'lerini sınırlar
MaxInputObjects200,000Zaten yüklenmiş indirect object sayısı üst sınırı
CancellationTokennilİş öncesinde, native rendering ve decoding sırasında ve yayından önce denetlenen ödünç token
CheckpointnilDönüşüm ve native kaynak checkpoint'lerinde nil sender ile çağrılan ödünç senkron callback; kaynak belgeye yeniden giriş yapmayın

Decode limitleri decoder işini sayar ve aynı filtered stream'den preflight, display-list derlemesi ve rendering sırasında yeniden ücret alabilir; bütçeyi artırmak caller'ın açık kararıdır

Pixel preflight, hem istenen fiziksel çözünürlüğü hem de UserUnit ölçeklemesi sonrası native renderer'ın tamsayı DPI'ını kapsar; çok küçük birimler ek raster pikseller gerektirebilir ve kesirli sayfa boyutları, image fiziksel sayfaya geri eşlendiğinde subpixel resampling'e yol açabilir

Dönüşüm sınırları kaynak yüklendikten sonra uygulanır; güvenilmeyen girdi kabul ederken loader'ın kendi kaynak limitlerini yapılandırın

Kaynak object graph korunur; read cache'ler ve decode istatistikleri dolabilir. Rendering ayarları, cancellation token, backend ve decode-bütçe ayarları başarıda da başarısızlıkta da geri yüklenir

Converter bu ayarları geçici olarak uygularken kaynak belgeye exclusive erişim verin

Rendering ve renk

Her sayfa, native fallback tanısı, düşürülmüş tanı veya eksik kaynak hatası olmadan render edilmelidir; desteklenmeyen içerik, eksik bir sayfa yayınlamak yerine dönüşümü reddeder

ICC argümanı; tanınan bir matrix/TRC gösterimi, standart D50'ye uyarlanmış primaries ve IEC sRGB transfer fonksiyonuyla sRGB'yi tanımlamalıdır; ilgisiz RGB profile'lar, CMYK profile'lar, bozuk profile'lar ve LUT tabanlı profile'lar reddedilir

Çıktı, sRGB OutputIntent ve PDF/A-4 XMP metadata'sı bildirir; kaynakta zaten yapılandırılmış özel bir proof veya çıktı ICC iş akışı, image-decoder ayarları sRGB olarak güvenle yeniden yorumlanamayacağı için reddedilir

FPC derlemesi, LittleCMS'in mevcut olduğu native codec köprüsünü gerektirir ve bu color-management backend'i eksikse dönüşümü reddeder

Kodlanmış inline image'lar dahil JPEG ve JPX image stream'lerinin gerçek codestream boyutları native pixel decoding'den önce incelenir ve PDF image dictionary ile uyuşmak zorundadır

JPEG, sınırlı 8-bit baseline, extended sequential ve progressive header'larını kabul eder; JPX, sınırlı J2K SIZ header'larını ve en fazla dört component'i ve component hassasiyeti en çok 16 bit olan sıradan uzunluktaki JP2 box'ları kabul eder

Kodlanmış codec'ler kaynak pikseli başına 64 baytlık ek ihtiyatlı bir working budget'a sahiptir ve JPX tile metadata'sı hem MaxInputObjects hem de MaxRasterBytes içindeki tile başına 1024 bayt ile sınırlıdır; bu yüzden varsayılan 256 MiB raster bütçesi en fazla 4,194,304 kodlanmış kaynak pikseline izin verir ve caller'lar daha büyük image'lar için bunu açıkça artırabilir

JBIG2 dönüşümü reddedilir, çünkü iç region ve sembol tahsisleri mevcut header API'sinden sınırlanamaz; nonterminal image codec'ler, extended-length JP2 box'ları, desteklenmeyen wrapper'lar ve DecodeParms taşıyan sarmalanmış codec stream'leri de reddedilir

CCITT fax parametreleri bildirilen pozitif image boyutlarını korumak zorundadır; dictionary'den farklı çıkan DecodeParms.Columns ve Rows override'ları, bilinmeyen Rows=0 dahil, native decoding'den önce reddedilir

Bu denetimler, converter'ın kabul ettiği bilinen header ve tahsis profile'larını sınırlar ve her native decoder için eksiksiz bir process-memory sandbox vaat etmez

Bilgi ve kalite kaybı

THPDFArchivalConversionReport; başarı ve iptal durumunu, kaynak ve render edilen sayfa sayılarını, raster pikselleri, çıktı baytlarını, kaldırılan annotation/form/attachment sayılarını, bir failure tanısını ve native doğrulama bulgularını sağlar

FailureKind; afkNone, afkConversion, afkBudget ve afkCancelled değerlerini ayırır; tipli converter bütçe hataları ayrıca BudgetMetric, BudgetObserved ve BudgetLimit sağlar

Checkpoint istisnası dönüşümü durdurur ve native failure sonucu üzerinden raporlanır; orijinal callback exception kategorisine ihtiyaç duyan wrapper'lar, converter onu yakalamadan önce saklamak zorundadır

archive.pdfa4.raster JSON ve C ABI işlemi; açık bilgi kaybı onayı gerektirir, kaynak handle'ı korur, doğrulanmış PDF'i ve kayıp raporunu teslim eder ve ihtiyatlı job-bütçe sınırları uygular

Uygunluk doğrulaması

Converter, hazırladığı çıktıyı yeniden yükler ve yayından önce taban PDF/A-4 profile'iyle ValidatePDFA4 gerektirir; native validator, belgelenmiş sınırlı kural setini kapsar ve her ISO 19005-4 gereksiniminin kanıtı değildir

Bağımsız kabul için veraPDF'i --flavour 4 ile kullanabilirsiniz; gömülü olmayan metin, transparency, bir RGB image, bir link, bir signature widget ve bir attachment içeren regression fixture, hiçbir kural veya denetim başarısız olmadan veraPDF 1.30.2'den geçti

Odaklanmış non-GUI regression suite'i için Tests/Delphi/Run-HotPDFArchivalTests.bat dosyasını çalıştırın