THotPDF.RepairPDFA4 Method

Esegue una transazione object graph limitata che applica una normalizzazione PDF/A-4 deterministica, valida il risultato ed esegue il commit dell'intero set di riparazioni sicure oppure ripristina lo stato originale del documento

Dichiarazione

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;

Contratto di commit

Perimetro delle riparazioni sicure

Il metodo può normalizzare l'header PDF 2.0, creare un trailer ID mancante, creare o riparare metadata stream e dizionari, canonizzare l'identificazione PDF/A tramite namespace URI preservando qualsiasi prefisso RDF legale, rimuovere le voci Catalog vietate e rimuovere le strutture di presentazione alternativa

La riparazione XMP UTF-8 rimuove i byte vietati dell'header del packet e gli attributi di codifica, usa il namespace canonico di identificazione PDF/A, scrive part=4 e rev=2020 e seleziona la corretta proprietà di conformità base, engineering o associated-file

La pipeline di riparazione non riscrive mai i content stream di pagina o di annotazione, i font, gli spazi colore, la trasparenza, le immagini, gli operatori grafici o il testo estratto

Rollback e auditabilità

Gli snapshot del graph coprono le mutazioni dei dizionari e i byte dei metadata stream, quindi il rollback ripristina l'header originale, lo stato del trailer, l'object graph, il payload XMP e il contenuto delle pagine

L'overload con finding condiviso allega azioni di riparazione, stato applied, unresolved, failed o rolled-back, conteggi di riparazione, identificatori di regola stabili, clausole, percorsi di oggetti, numeri di oggetto e posizioni di pagina

I budget su oggetti, mutazioni, problemi trattenuti, byte decodificati e token di contenuto impediscono ai file avversari di trasformare la riparazione o i suoi gate di validazione in lavoro senza limiti

Esempio

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;

API correlate