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
- Sichtbare normale
AP/N-Appearances werden über natives Annotation-Flattening von ihrer Form-BBox und Matrix auf das Anmerkungs-Rect gemappt, mit eigenen Schriften und Ressourcen - Die Flags Invisible, Hidden und NoView verhindern das Zeichnen, selbst wenn eine vorhandene normale Appearance existiert; Popup-Anmerkungen werden ohne Zeichnen entfernt
- Rahmenlose Links ohne normale Appearance werden nur dann ohne Zeichnen entfernt, wenn ein expliziter Rahmen mit Breite null belegt, dass sie keinen sichtbaren Rahmen haben
SynthesizeMissingAppearancesist standardmäßig true und ruft die native Markup- oder Feld-Appearance-Generierung auf; nicht unterstützte Subtypen, ungültige Rechtecke oder fehlgeschlagene Generierung weisen die Konvertierung zurück- Fehlende Text-Appearances unterstützen ASCII-Werte mit einer kompatiblen nativen Schriftkodierung; hexadezimale, Unicode- oder maskierte Textwerte brauchen eine explizite normale Appearance
- Synthetisierte Text-Appearances werden nach Leerraum-Normalisierung gegen ihre Quellwerte im neu geladenen durchsuchbaren Text geprüft; eine inkompatible Schriftkodierung weist die Veröffentlichung zurück
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