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

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