THotPDF.RepairPDFA4-Methode
Führt eine begrenzte Objektgraph-Transaktion aus, die deterministische PDF/A-4-Normalisierung anwendet, das Ergebnis validiert und entweder den vollständigen sicheren Reparatursatz committet oder den ursprünglichen Dokumentzustand wiederherstellt
Deklaration
function RepairPDFA4(
const Options: THPDFPDFA4RepairOptions;
out Report: THPDFPDFA4RepairReport;
out Issues: THPDFPDFA4ValidationIssues): boolean; overload;
function RepairPDFA4(
const Options: THPDFPDFA4RepairOptions;
out Report: THPDFPDFA4RepairReport;
out Issues: THPDFPDFA4ValidationIssues;
out Findings: THPDFComplianceFindings): boolean; overload;
Commit-Vertrag
Truebedeutet, dass die Transaktion akzeptiert wurde, einschließlich des Falls ohne Änderung bei einem bereits konformen DokumentFalsebedeutet, dass die Transaktion nach einem Limitverstoß, einer Validierungsverschlechterung, einer Exception oder einer unerfülltenRequireFullConformance-Policy zurückgerollt wurdeReport.ValidationSucceededist das maßgebliche Vollkonformitätsergebnis nach einem committeten Repair- Mit Standardoptionen können sichere Reparaturen committen, während unabhängige unsichere Validierungsfeststellungen ausdrücklich in
IssuesundFindingsverbleiben
Grenze sicherer Reparaturen
Die Methode kann den PDF-2.0-Header normalisieren, eine fehlende Trailer-ID anlegen, Metadaten-Streams und Dictionarys erzeugen oder reparieren, die PDF/A-Identifikation über Namespace-URI kanonisieren und dabei jedes legale RDF-Präfix bewahren, verbotene Catalog-Einträge entfernen und Alternate-Presentation-Strukturen entfernen
Die UTF-8-XMP-Reparatur entfernt verbotene Packet-Header-Byte- und Encoding-Attribute, verwendet den kanonischen PDF/A-Identifikations-Namespace, schreibt part=4 und rev=2020 und wählt die richtige Base-, Engineering- oder Associated-File-Conformance-Eigenschaft
Die Reparatur-Pipeline schreibt niemals Seiten- oder Annotations-Content-Streams, Fonts, Farbräume, Transparenz, Bilder, Grafikoperatoren oder extrahierten Text um
Rollback und Auditierbarkeit
Graph-Snapshots decken Dictionary-Mutationen und Metadaten-Stream-Bytes ab, sodass ein Rollback den ursprünglichen Header, den Trailer-Zustand, den Objektgraphen, die XMP-Payload und den Seiteninhalt wiederherstellt
Der Finding-Overload mit gemeinsamer Struktur hängt Reparaturaktionen, den Status applied, unresolved, failed oder rolled back, Reparaturzähler, stabile Regel-Identifikatoren, Klauseln, Objektpfade, Objektnummern und Seitenpositionen an
Objekt-, Mutations-, zurückbehaltene-Issue-, dekodierte-Byte- und Content-Token-Budgets verhindern, dass feindliche Dateien die Reparatur oder ihre Validierungstore in unbegrenzte Arbeit verwandeln
Beispiel
var
Options: THPDFPDFA4RepairOptions;
Report: THPDFPDFA4RepairReport;
Issues: THPDFPDFA4ValidationIssues;
begin
Options := THPDFPDFA4RepairOptions.Default;
Options.Profile := p4pAutomatic;
if not PDF.RepairPDFA4(Options, Report, Issues) then
raise Exception.Create('PDF/A-4 repair rolled back');
if not Report.ValidationSucceeded then
LogRemainingPDFA4Issues(Issues);
end;