Geladen PDF naar PDF/A-4 met tekst- en vectorpreservatie
HPDFArchivalConversion biedt een preservation-profiel voor geladen documenten waarvan de zichtbare fonts, kleurruimtes en rendering-resources aan PDF/A-4 kunnen voldoen zonder diens paginacontent te vervangen
De converter behoudt originele tekstoperatoren, vectorpaths, afbeeldingen, pagina-geometrie en bestaande OCR-tekstlagen, flattent zichtbare normal annotation- en widget-appearances naar vector Form XObjects, repareert ondersteunde metadata- en structuurproblemen en valideert het geserialiseerde resultaat vóór publicatie
Dit profiel rasteriseert nooit een pagina: RasterizedPages blijft nul, ook wanneer OCR een tijdelijke recognition-bitmap rendert en onzichtbare doorzoekbare tekst toevoegt
Runtime-acceptatie dekt Delphi Win32 en Win64; Windows FPC compileert de implementatie uit verse bronnen, en de gegenereerde publieke headers compileren met C++Builder Win32 en Win64x
Entry points
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;
Laad eerst de bron, houd elke invoerstream in caller-eigendom in leven en geef de converter exclusieve toegang tot het document tijdens de operatie
Options := THPDFArchivalPreservationOptions.Default;
if not HPDFConvertLoadedToPDFA4PreservingFile(Source, TargetFileName,
SRGBProfile, Options, Report) then
raise Exception.Create(Report.Conversion.Diagnostic);
Preservation-bewijs
De converter maakt een snapshot van de huidige bewerkte brongraaf onder een graaftransactie en rolt de bron terug na serialisatie, en voert daarna al het conversiewerk uit op een onafhankelijke geladen kloon
Originele gedecodeerde page content streams moeten byte-identiek blijven en bereikbaar vanuit hun originele pagina's in hun oorspronkelijke volgorde na herladen van de uitvoer
Page resource-bomen en behouden normal appearance-resource-bomen worden doorlopen met object- en recursielimieten; embedded fontprogramma's, ToUnicode-maps, afbeeldingen, ICC-profielen en nested Form XObjects behouden hun originele encoded payloads, geverifieerd met streaming SHA-256 en gecontroleerd op voortgezette bereikbaarheid vanuit uitvoerpagina's
Onafhankelijke content streams omklemmen originele pagina-operatoren met graphics-state-guards en houden toegevoegde appearance-operatoren vast, waarbij het native single-stream-append-pad wordt vermeden dat een originele content stream zou herschrijven
TextAndVectorContentPreserved wordt pas true nadat native uitvoervalidatie en preservation-checks slagen; hij wordt gewist wanneer conversie of bestandpublicatie faalt
Appearance-afhandeling
- Zichtbare normal
AP/N-appearances worden vanuit diens Form BBox en Matrix gemapt naar de annotatie-Rect via native annotation flattening, met behoud van diens eigen fonts en resources - Invisible-, Hidden- en NoView-vlaggen verhinderen schilderen zelfs wanneer een bestaande normale appearance aanwezig is; Popup-annotaties worden verwijderd zonder te schilderen
- Randloze links zonder normale appearance worden zonder te schilderen verwijderd alleen wanneer een expliciete zero-width rand vaststelt dat ze geen zichtbare rand hebben
SynthesizeMissingAppearancesdefaultt naar true en roept native markup- of field-appearance-generatie aan; niet-ondersteunde subtypes, ongeldige rechthoeken of gefaalde generatie verwerpen de conversie- Ontbrekende tekstuele appearances ondersteunen ASCII-waarden met een compatibele native font encoding; hexadecimale, Unicode- of gemaskeerde tekstuele waarden vragen een expliciete normale appearance
- Gesynthetiseerde tekstuele appearances worden in herladen doorzoekbare tekst gecheckt tegen diens bronwaarden na whitespace-normalisatie; een incompatibele font encoding verwerpt publicatie
Een bestaande normale appearance aanleveren ondersteunt willekeurige embedded-font-tekst die al correct in die appearance is gerepresenteerd, Unicode inbegrepen; de converter behoudt die appearance in plaats van een systeemfont te substitueren
Flattening verwijdert annotatie-interactie, editable fields, berekeningen, actions en signature-velden terwijl zichtbare appearances behouden blijven; elke getroffen annotatie en elke gesynthetiseerde appearance levert een loss-entry op met diens bronpagina, annotatie-index en objectnummer indien beschikbaar
Kleur, fonts en expliciete verliezen
Het vereiste ICC-argument is een sRGB matrix/TRC-profiel dat de bestaande archival-validator accepteert; elk bestaand output-profiel moet exact dezelfde gedecodeerde bytes hebben als het meegeleverde profiel, anders wordt de conversie geweigerd om de bestaande output-conditie niet te herinterpreteren
De converter voegt alleen een sRGB PDF/A-output intent toe wanneer nodig, synchroniseert de echte serializer naar een PDF 2.0-header en roept begrensde base PDF/A-4-metadata- en structurele reparatie aan
Hij embedt geen ontbrekende zichtbare fontprogramma's, recodeert geen originele tekst, kleurt geen DeviceCMYK-operatoren om, vervangt geen bestaande output-conditie en flattent geen paginatransparantie naar een bitmap; onopgeloste native preflight-bevindingen verwerpen publicatie
Versleutelde bronnen moeten vóór conversie worden ontsleuteld; signature-velden vragen expliciete AllowSignatureInvalidation, en bestaande embedded files vragen expliciete RemoveEmbeddedFiles omdat dit profiel op base PDF/A-4 mikt
Losses rapporteert ook signature-invalidation, embedded-file-verwijdering, verwijdering van legacy Info-dictionaries en verwijdering van verboden catalog- of presentatiemetadata
Bestaande XMP wordt behouden wanneer ondersteund; wanneer metadata wordt gegenereerd, wordt ondersteunde titel-, auteur-, onderwerp- en keyword-informatie overgedragen, terwijl willekeurige legacy Info-velden niet worden gegarandeerd te overleven
OCR en budgetten
AddOCRToImagePages defaultt naar false; aanzetten herkent pagina's zonder extraheerbare tekst en plakt onzichtbare tekst aan zonder originele content of bestaande OCR-lagen te vervangen
Zet OCREngine op een applicatie-engine of laat hem nil voor de built-in begrensde ASCII-OCR-engine, wiens taal- en typografie-dekking die van het built-in recognition-profiel blijft
OCROptions stuurt recognition-resolutie en woordbudgetten, terwijl de converter skip-pages-with-text, behoud van bestaande OCR-lagen en weglaten van een nieuwe optional-content-groep afdwingt
Limits gebruikt THPDFArchivalConversionOptions.Default voor pagina-aantal, object-aantal, gestagede uitvoerbytes, individueel streamwerk, cumulatief streamwerk, annulering en synchrone checkpoints; raster pixel-limieten gelden alleen wanneer OCR recognition-bitmaps rendert
Extra defaults zijn 1.024 loss-entries, 1.048.576 geëxtraheerde of verwachte tekst-code-units en 4.000.000 content-tokens per native validatiepass
Resource payload-hashing rekent encoded bytes af op dezelfde stream-work-budgetten; bron- en uitvoerverificatie consumeren beide cumulatief werk, dus grote scancollecties kunnen een expliciet verhoogde MaxTotalDecodedBytes vragen, ook al gebruikt resourceverificatie een vaste 64 KiB hash-buffer
Budgetten gelden na bronloading en begrenzen converter-owned snapshots en gestagede uitvoer apart; configureer loader-limieten wanneer je niet-vertrouwde invoer accepteert
Publicatie en validatie
De stream-API vraagt een lege seekable destination op positie nul en verwerpt bron-aliassen; hij kopieert gestagede bytes pas nadat herladen, native validatie, preservation-checks en annuleringschecks slagen
Een destination-schrijffout triggert een best-effort reset; een willekeurige custom stream mag die reset weigeren, dus gebruik het file-entrypoint voor atomaire bestandpublicatie
De file-API probeert op bron-aliassen, maakt een exclusief tijdelijk bestand naast de target aan, flußt het en vervangt de target met MoveFileEx pas nadat alle checks slagen; eerdere fouten behouden een bestaande target en verwijderen het tijdelijke bestand
InitialValidationIssues, Repair, Conversion.ValidationIssues, OCR-details, stream-aantallen, geëxtraheerde tekst-aantallen en expliciete verliezen blijven beschikbaar voor inspectie
Native validatie dekt de ondersteunde HotPDF PDF/A-4-regels en is geen blanke certificering van willekeurige PDF's; regressie-acceptatie gebruikt daarnaast onafhankelijke pypdf- en MuPDF-checks plus veraPDF PDF/A-4-validatie op gegenereerde appearance- en native OCR-artefacten
Echte corpus-regressie omvat embedded-font Word- en library-gidsen en een 380-pagina Chinese scancollectie, terwijl een handelsrapport met niet-geembedde fonts en DeviceCMYK-content een expliciet rejectiegeval is
Regressiecommando's
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
De Delphi-runner onderdrukt viewer-launch en omvat zowel preservation- als bestaande raster-regressie-fixtures; onafhankelijke veraPDF-acceptatie gebruikt het echte PDF/A-4-validatieprofiel
Verwante topics
Raster archival conversion biedt een apart profiel met expliciet verlies van originele tekst en vectors wanneer native rendering wordt ondersteund