Yüklenmiş PDF'ten metin ve vektör korumalı PDF/A-4'e
HPDFArchivalConversion, görünür yazı tipleri, renk uzayları ve rendering kaynakları sayfa içeriğini değiştirmeden PDF/A-4'ü karşılayabilen yüklenmiş belgeler için bir koruma profili sunar
Converter, orijinal metin operator'lerini, vektör path'lerini, görselleri, sayfa geometrisini ve mevcut OCR metin katmanlarını tutar; görünür normal anotasyon ve widget görünümlerini vektör Form XObject'lerine düzleştirir, desteklenen metadata ve yapısal sorunları onarır ve yayımdan önce serialize edilmiş result'ı doğrular
Bu profil bir sayfayı asla rasterize etmez: OCR, geçici bir tanıma bitmap'i render edip görünmez aranabilir metin eklediğinde bile RasterizedPages sıfır kalır
Runtime kabulü, Delphi Win32 ve Win64'ü kapsar; Windows FPC implementation'ı taze kaynaklardan derler ve üretilmiş public header'lar C++Builder Win32 ve Win64x ile derlenir
Entry point'ler
function HPDFConvertLoadedToPDFA4Preserving(Source: THotPDF;
Destination: TStream; const SRGBProfile: TBytes;
const Options: THPDFArchivalPreservationOptions;
out Report: THPDFArchivalPreservationReport): Boolean;
function HPDFConvertLoadedToPDFA4PreservingFile(Source: THotPDF;
const TargetFileName: string; const SRGBProfile: TBytes;
const Options: THPDFArchivalPreservationOptions;
out Report: THPDFArchivalPreservationReport): Boolean;
Önce kaynağı yükleyin, çağıranın-sahip olduğu input stream'ini canlı tutun ve operation sırasında converter'a belgeye münhasır erişim verin
Options := THPDFArchivalPreservationOptions.Default;
if not HPDFConvertLoadedToPDFA4PreservingFile(Source, TargetFileName,
SRGBProfile, Options, Report) then
raise Exception.Create(Report.Conversion.Diagnostic);
Koruma kanıtı
Converter, mevcut düzenlenmiş kaynak grafiğini bir graf transaction'ı altında snapshot'lar, serialize etmeden sonra kaynağı geri alır ve tüm conversion işini bağımsız bir yüklenmiş klon üzerinde gerçekleştirir
Orijinal decoded sayfa content stream'leri, output reload sonrasında byte-özdeş kalmalı ve orijinal sıralarında orijinal sayfalarından erişilebilir olmalıdır
Sayfa kaynak ağaçları ve tutulan normal appearance kaynak ağaçları, object ve özyineleme limitleriyle taranır; gömülü yazı tipi programları, ToUnicode map'leri, görseller, ICC profilleri ve iç-ice Form XObject'leri orijinal kodlanmış payload'larını tutar — streaming SHA-256 ile doğrulanarak ve output sayfalarından devam eden erişilebilirlik için denetlenerek
Bağımsız content stream'ler, orijinal sayfa operator'lerini graphics-state guard'larla çevreler ve eklenmiş appearance operator'lerini tutar; orijinal bir content stream'i yeniden yazacak native tek-stream append path'inden kaçınır
TextAndVectorContentPreserved, yalnızca native output doğrulaması ve koruma denetimleri geçtikten sonra true olur; conversion veya dosya yayımı başarısız olduğunda temizlenir
Appearance handling
- Görünür normal
AP/Ngörünümleri, kendi Form BBox ve Matrix'lerinden anotasyon Rect'ine native anotasyon flattening'ile map edilir — kendi yazı tiplerini ve kaynaklarını koruyarak - Invisible, Hidden ve NoView flag'leri, mevcut bir normal görünüm bulunsun bile boyamayı önler; Popup anotasyonları boyanmadan kaldırılır
- Normal görünümü olmayan bordersız link'ler, yalnızca açık bir sıfır-genişlikli border görünür border'ları olmadığını kurduğunda boyanmadan kaldırılır
SynthesizeMissingAppearancesdefault'ta true'dur ve native markup veya field appearance üretimini çağırır; desteklenmeyen subtype'lar, geçersiz dikdörtgenler veya başarısız üretim conversion'ı reddeder- Eksik metinsel görünümler, uyumlu bir native yazı tipi encoding'iyle ASCII value'ları destekler; onaltılık, Unicode veya maskeli metinsel value'lar açık bir normal görünüm gerektirir
- Sentezlenmiş metinsel görünümler, whitespace normalizasyonundan sonra yeniden yüklenen aranabilir metinde kaynak value'larına karşı denetlenir; uyumsuz bir yazı tipi encoding'i yayımı reddeder
Mevcut bir normal görünüm sağlamak, o görünümde zaten doğru temsil edilen keyfi gömülü-yazı-tipli metni — Unicode dâhil — destekler; converter, sistem yazı tipiyle değiştirmek yerine o görünümü tutar
Düzleştirme, görünür görünümleri tutarken anotasyon etkileşimini, düzenlenebilir field'ları, calculation'ları, action'ları ve signature field'ları kaldırır; her etkilenen anotasyon ve her sentezlenmiş görünüm, kendi kaynak sayfası, anotasyon indeksi ve — mevcutken — object numarasıyla bir kayıp entry'si üretir
Renk, yazı tipleri ve açık kayıplar
Zorunlu ICC argümanı, mevcut archival validator tarafından kabul edilen bir sRGB matrix/TRC profilidir; her mevcut output profili, sağlanan profille tam olarak aynı decoded baytlara sahip olmalıdır — aksi hâlde mevcut output koşulunu yeniden yorumlamamak için conversion reddedilir
Converter, gerektiğinde sRGB bir PDF/A output intent ekler, gerçek serializer'ı bir PDF 2.0 header'ına eşzamanlar ve sınırlı temel PDF/A-4 metadata ve yapısal onarım çağırır
Eksik görünür yazı tipi programlarını gömmez, orijinal metni yeniden kodlamaz, DeviceCMYK operator'lerini yeniden renklendirmez, mevcut bir output koşulunu değiştirmez veya sayfa saydamlığını bir bitmap'e düzleştirmez; çözümlenmemiş native preflight bulguları yayımı reddeder
Şifreli kaynaklar conversion'dan önce decrypt edilmelidir; signature field'lar açık AllowSignatureInvalidation gerektirir ve mevcut gömülü dosyalar, bu profil temel PDF/A-4'ü hedeflediği için açık RemoveEmbeddedFiles gerektirir
Losses, ayrıca signature invalidation'ı, embedded-file kaldırmasını, legacy Info dictionary'lerinin kaldırmasını ve yasak catalog veya presentation metadata'sının kaldırmasını raporlar
Mevcut XMP desteklendiğinde korunur; metadata üretildiğinde, desteklenen title, author, subject ve keyword bilgisi aktarılır — keyfi legacy Info alanlarının hayatta kalması vaat edilmez
OCR ve bütçeler
AddOCRToImagePages default'ta false'tur; etkinleştirmek, çıkarılabilir metni olmayan sayfaları tanır ve orijinal içeriği veya mevcut OCR katmanlarını değiştirmeden görünmez metin ekler
OCREngine'i bir uygulama engine'ine ayarlayın veya built-in sınırlı ASCII OCR engine'i için nil bırakın — dili ve tipografi kapsamı built-in tanıma profili'ninki olarak kalır
OCROptions, tanıma resolution'ını ve kelime bütçelerini kontrol eder; converter ise text-olu-sayfaları-atla'yı, mevcut OCR katmanlarının korunmasını ve yeni bir optional-content grubunun atlanmasını zorlar
Limits, sayfa sayısı, object sayısı, staged output baytları, tekil stream işi, kümülatif stream işi, cancellation ve eşzamanlı checkpoint'ler için THPDFArchivalConversionOptions.Default kullanır; raster piksel limitleri yalnızca OCR tanıma bitmap'leri render ettiğinde uygulanır
Ek default'lar, 1.024 kayıp entry'si, 1.048.576 çıkarılmış veya beklenen metin code unit'i ve native doğrulama geçişi başına 4.000.000 content token'dır
Kaynak payload hashing'i, kodlanmış baytları aynı stream-iş bütçelerine sayar; kaynak ve output doğrulaması ikisi de kümülatif işi tüketir — böylece büyük scan koleksiyonları, kaynak doğrulaması sabit bir 64 KiB hash buffer'ı kullanmasına rağmen açıkça artırılmış bir MaxTotalDecodedBytes gerektirebilir
Bütçeler, kaynak yüklemeden sonra uygulanır ve converter-owned snapshot'ı ile staged output'u ayrı sınırlar; güvenilmeyen girdi kabul ederken loader limitlerini yapılandırın
Yayımlama ve doğrulama
Stream API, konum sıfırda boş seekable bir hedef gerektirir ve kaynak alias'larını reddeder; staged baytları yalnızca reload, native doğrulama, koruma denetimleri ve cancellation denetimleri başarılı olduktan sonra kopyalar
Bir hedef yazma başarısızlığı best-effort bir reset tetikler; keyfi özel bir stream o reset'i reddedebilir — bu yüzden atomik dosya yayımı için file entry point'ini kullanın
Dosya API, kaynak alias'larını sınar, hedefin yanında münhasır geçici bir dosya oluşturur, onu flush eder ve tüm denetimler geçtikten sonra hedefi MoveFileEx ile değiştirir; önceki başarısızlıklar mevcut hedefi korur ve geçici dosyayı kaldırır
InitialValidationIssues, Repair, Conversion.ValidationIssues, OCR detayları, stream sayıları, çıkarılmış metin sayıları ve açık kayıplar inceleme için kullanılabilir kalır
Native doğrulama, desteklenen HotPDF PDF/A-4 kurallarını kapsar ve keyfi PDF'lerin blanket bir sertifikası değildir; regresyon kabulü, ayrıca üretilmiş appearance ve native OCR artefaktları üzerinde bağımsız pypdf ve MuPDF denetimleri artı veraPDF PDF/A-4 doğrulaması kullanır
Gerçek corpus regresyonu, gömülü-yazı-tipli Word ve kütüphane rehberlerini ve 380 sayfalık bir Çince scan koleksiyonunu içerir; gömülmemiş yazı tipleri ve DeviceCMYK içeriğiyle bir trade raporu ise açık bir reddetme case'idir
Regresyon komutları
powershell -File Tests/Delphi/Run-ArchivalPreservationTests.ps1 -Platform Win32
powershell -File Tests/Delphi/Run-ArchivalPreservationTests.ps1 -Platform Win64
python Tests/Delphi/Fixtures/ArchivalPreservation/verify_preserving_output.py
verapdf --format xml --flavour 4 Tests/Delphi/generated/ArchivalPreservation/appearance.pdf Tests/Delphi/generated/ArchivalPreservation/ocr.pdf Tests/Delphi/generated/ArchivalPreservation/native-appearance.pdf
Delphi runner, viewer başlatmasını bastırır ve hem koruma hem mevcut raster regresyon fixture'larını içerir; bağımsız veraPDF kabulü, gerçek PDF/A-4 doğrulama profilini kullanır
İlgili konular
Raster archival conversion, native rendering desteklendiğinde orijinal metin ve vektörlerin açık kaybıyla ayrı bir profil sağlar