Geladenes PDF zu PDF/A-4 mit Text- und Vektorerhalt

HPDFArchivalConversion bietet ein Erhaltungsprofil für geladene Dokumente, deren sichtbare Schriften, Farbräume und Rendering-Ressourcen PDF/A-4 erfüllen können, ohne ihren Seiteninhalt zu ersetzen

Der Konverter behält ursprüngliche Textoperatoren, Vektorpfade, Bilder, Seitengeometrie und vorhandene OCR-Textebenen bei, flacht sichtbare normale Anmerkungs- und Widget-Appearances zu Vektor-Form-XObjects ab, repariert unterstützte Metadaten- und Strukturprobleme und validiert das serialisierte Ergebnis vor der Veröffentlichung

Dieses Profil rastert nie eine Seite: RasterizedPages bleibt null, auch wenn OCR eine temporäre Erkennungs-Bitmap rendert und unsichtbaren durchsuchbaren Text anhängt

Die Laufzeitabnahme deckt Delphi Win32 und Win64 ab; Windows FPC kompiliert die Implementierung aus frischen Quellen, und die erzeugten öffentlichen Header kompilieren mit C++Builder Win32 und Win64x

Einstiegspunkte

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;

Laden Sie zuerst die Quelle, halten Sie einen Eingabestream im Aufruferbesitz am Leben und geben Sie dem Konverter während der Operation exklusiven Zugriff auf das Dokument

Options := THPDFArchivalPreservationOptions.Default;
if not HPDFConvertLoadedToPDFA4PreservingFile(Source, TargetFileName,
  SRGBProfile, Options, Report) then
  raise Exception.Create(Report.Conversion.Diagnostic);

Erhaltungsnachweis

Der Konverter macht einen Snapshot des aktuell bearbeiteten Quellgraphen innerhalb einer Graph-Transaktion und rollt die Quelle nach der Serialisierung zurück, führt dann die gesamte Konvertierungsarbeit auf einem unabhängigen geladenen Klon aus

Ursprüngliche dekodierte Seiteninhalt-Streams müssen nach dem Neuladen der Ausgabe byteidentisch bleiben und von ihren ursprünglichen Seiten in ihrer ursprünglichen Reihenfolge erreichbar sein

Seitenressourcenbäume und bewahrte normale Appearance-Ressourcenbäume werden mit Objekt- und Rekursionslimits traversiert; eingebettete Schriftprogramme, ToUnicode-Maps, Bilder, ICC-Profile und verschachtelte Form XObjects behalten ihre ursprünglichen kodierten Payloads, verifiziert mit Streaming-SHA-256 und geprüft auf fortdauernde Erreichbarkeit von den Ausgabeseiten

Unabhängige Content-Streams umschließen ursprüngliche Seitenoperatoren mit Graphics-State-Guards und nehmen angehängte Appearance-Operatoren auf, wodurch der native Single-Stream-Anhängepfad vermieden wird, der einen ursprünglichen Content-Stream umschreiben würde

TextAndVectorContentPreserved wird erst true, wenn die native Ausgabevalidierung und die Erhaltungsprüfungen bestanden sind; es wird zurückgesetzt, wenn Konvertierung oder Dateiveröffentlichung fehlschlägt

Appearance-Behandlung

Eine vorhandene normale Appearance zu liefern unterstützt beliebigen Embedded-Font-Text, der in dieser Appearance bereits korrekt dargestellt ist, einschließlich Unicode; der Konverter behält diese Appearance, statt eine Systemschrift einzusetzen

Das Flattening entfernt Anmerkungs-Interaktion, editierbare Felder, Berechnungen, Actions und Signaturfelder, während sichtbare Appearances erhalten bleiben; jede betroffene Anmerkung und jede synthetisierte Appearance erzeugt einen Verlusteintrag mit ihrer Quellseite, ihrem Anmerkungsindex und, wenn verfügbar, ihrer Objektnummer

Farbe, Schriften und explizite Verluste

Das erforderliche ICC-Argument ist ein sRGB-Matrix/TRC-Profil, das der vorhandene Archival-Validator akzeptiert; jedes vorhandene Output-Profil muss exakt dieselben dekodierten Bytes wie das gelieferte Profil haben, andernfalls wird die Konvertierung abgelehnt, um die bestehende Output-Bedingung nicht neu zu interpretieren

Der Konverter ergänzt einen sRGB-PDF/A-Output-Intent nur bei Bedarf, synchronisiert den tatsächlichen Serializer auf einen PDF-2.0-Header und ruft die begrenzte Basisreparatur von PDF/A-4-Metadaten und Struktur auf

Er bettet keine fehlenden sichtbaren Schriftprogramme ein, kodiert keinen Originaltext um, färbt keine DeviceCMYK-Operatoren um, ersetzt keine vorhandene Output-Bedingung und flacht keine Seitentransparenz zu einer Bitmap ab; unaufgelöste native Preflight-Funde weisen die Veröffentlichung zurück

Verschlüsselte Quellen müssen vor der Konvertierung entschlüsselt werden; Signaturfelder verlangen explizit AllowSignatureInvalidation, und vorhandene Embedded Files verlangen explizit RemoveEmbeddedFiles, weil dieses Profil auf Basis-PDF/A-4 zielt

Losses meldet auch Signaturinvalidierung, das Entfernen von Embedded Files, das Entfernen von Legacy-Info-Dictionaries und das Entfernen verbotener Katalog- oder Präsentationsmetadaten

Vorhandenes XMP bleibt erhalten, wenn es unterstützt wird; bei erzeugten Metadaten werden unterstützte Titel-, Autor-, Betreff- und Stichwortinformationen übernommen, während für beliebige Legacy-Info-Felder kein Erhalt zugesagt wird

OCR und Budgets

AddOCRToImagePages ist standardmäßig false; beim Einschalten erkennt es Seiten ohne extrahierbaren Text und hängt unsichtbaren Text an, ohne Originalinhalt oder vorhandene OCR-Ebenen zu ersetzen

Setzen Sie OCREngine auf eine Anwendungs-Engine oder lassen Sie es nil für die eingebaute begrenzte ASCII-OCR-Engine, deren Sprach- und Typografieabdeckung die des eingebauten Erkennungsprofils bleibt

OCROptions steuert Erkennungsauflösung und Wortbudgets, während der Konverter Skip-Pages-With-Text erzwingt, das Behalten vorhandener OCR-Ebenen und das Weglassen einer neuen Optional-Content-Gruppe

Limits nutzt THPDFArchivalConversionOptions.Default für Seitenzahl, Objektzahl, gestufte Ausgabebytes, einzelne Stream-Arbeit, kumulative Stream-Arbeit, Abbruch und synchrone Checkpoints; Raster-Pixel-Limits greifen nur, wenn OCR Erkennungs-Bitmaps rendert

Weitere Defaults sind 1024 Verlusteinträge, 1048576 extrahierte oder erwartete Text-Codeeinheiten und 4000000 Content-Token pro nativem Validierungsdurchlauf

Das Hashen der Ressourcen-Payloads rechnet kodierte Bytes auf dieselben Stream-Arbeitsbudgets an; Quell- und Ausgabeverifikation verbrauchen beide kumulative Arbeit, daher können große Scan-Sammlungen ein explizit erhöhtes MaxTotalDecodedBytes nötig machen, obwohl die Ressourcenverifikation einen festen 64-KiB-Hash-Puffer nutzt

Budgets greifen nach dem Quellladen und begrenzen konvertereigene Snapshots und gestufte Ausgaben getrennt; konfigurieren Sie Loader-Limits, wenn Sie nicht vertrauenswürdige Eingaben annehmen

Veröffentlichung und Validierung

Die Stream-API verlangt ein leeres, positionierbares Ziel an Position null und lehnt Quellaliase ab; sie kopiert gestufte Bytes erst, nachdem Neuladen, native Validierung, Erhaltungsprüfungen und Abbruchprüfungen erfolgreich sind

Ein Schreibfehler am Ziel löst einen Best-Effort-Reset aus; ein beliebiger eigener Stream darf diesen Reset ablehnen, nutzen Sie daher den Datei-Einstiegspunkt für die atomare Dateiveröffentlichung

Die Datei-API testet auf Quellaliase, erzeugt eine exklusive temporäre Datei neben dem Ziel, flusht sie und ersetzt das Ziel erst nach bestandenen Prüfungen mit MoveFileEx; frühere Fehler bewahren ein vorhandenes Ziel und entfernen die temporäre Datei

InitialValidationIssues, Repair, Conversion.ValidationIssues, OCR-Details, Stream-Zähler, extrahierte Textzähler und explizite Verluste bleiben zur Einsicht verfügbar

Die native Validierung deckt die unterstützten HotPDF-PDF/A-4-Regeln ab und ist keine Pauschalzertifizierung beliebiger PDFs; die Regressionsabnahme nutzt zusätzlich unabhängige pypdf- und MuPDF-Prüfungen sowie veraPDF-PDF/A-4-Validierung an erzeugten Appearance- und nativen OCR-Artefakten

Die echte Korpus-Regression umfasst Word- und Bibliotheksanleitungen mit eingebetteten Schriften und eine 380-seitige chinesische Scan-Sammlung, während ein Geschäftsbericht mit nicht eingebetteten Schriften und DeviceCMYK-Inhalt ein expliziter Ablehnungsfall ist

Regressionskommandos

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

Der Delphi-Runner unterdrückt den Viewer-Start und enthält sowohl Erhaltungs- als auch vorhandene Raster-Regressionsfixtures; die unabhängige veraPDF-Abnahme nutzt das tatsächliche PDF/A-4-Validierungsprofil

Verwandte Themen

Raster-Archivierungskonvertierung bietet ein separates Profil mit explizitem Verlust von Originaltext und Vektoren, wenn natives Rendering unterstützt wird