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

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;

Související API