THotPDF.RepairPDFA4 Method
Spustí ohraničenou object-graph transakci, která aplikuje deterministickou normalizaci PDF/A-4, zvaliduje výsledek a buď potvrdí kompletní sadu bezpečných oprav, nebo obnoví původní stav dokumentu
Deklarace
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 kontrakt
Trueznamená, že transakce byla přijata, včetně případu bez změn u už nyní compliant dokumentuFalseznamená, že transakce se odrolula po selhání limitu, validační regresi, výjimce nebo nesplněné politiceRequireFullConformanceReport.ValidationSucceededje autoritativní full-conformance výsledek po potvrzené opravě- S výchozími volbami mohou bezpečné opravy proběhnout, zatímco nesouvisející nebezpečné validační nálezy zůstávají explicitně uvedené v
IssuesaFindings
Hranice bezpečných oprav
Metoda dokáže normalizovat PDF 2.0 hlavičku, vytvořit chybějící trailer ID, vytvořit či opravit metadata streamy a slovníky, kanonizovat PDF/A identifikaci podle namespace URI se zachováním jakéhokoli legálního RDF prefixu, odstranit zakázané Catalog položky a odstranit alternate-presentation struktury
Oprava UTF-8 XMP odstraní zakázané bajty packet headeru a atributy kódování, použije kanonický namespace PDF/A identifikace, zapíše part=4 a rev=2020 a vybere správnou conformance vlastnost base, engineering nebo associated-file
Opravná pipeline nikdy nepřepisuje content streamy stránek ani anotací, fonty, barevné prostory, transparency, obrázky, grafické operátory ani extrahovaný text
Rollback a auditovatelnost
Graf snapshoty pokrývají mutace slovníků i bajty metadata streamů, takže rollback obnoví původní hlavičku, stav traileru, object graph, XMP payload i obsah stránek
Overload se shared findings připojuje repair akce, stav applied, unresolved, failed nebo rolled-back, počty oprav, stabilní identifikátory pravidel, klauzule, object paths, čísla objektů a umístění na stránkách
Budgety pro objekty, mutace, ponechané problémy, dekódované bajty a obsahové tokeny brání adversariálním souborům proměnit opravu či její validační brány v neomezenou práci
Příklad
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;