Método THotPDF.RepairPDFA4

Executa uma transação delimitada no grafo de objetos que aplica a normalização determinística de PDF/A-4, valida o resultado e então confirma o conjunto completo de reparos seguros ou restaura o estado original do documento

Declaração

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;

Contrato de confirmação

Fronteira do reparo seguro

O método pode normalizar o cabeçalho PDF 2.0, criar um ID de trailer ausente, criar ou reparar fluxos e dicionários de metadados, canonizar a identificação PDF/A pela URI do namespace preservando qualquer prefixo RDF legal, remover entradas proibidas do Catálogo e remover estruturas de apresentação alternativa

O reparo de XMP UTF-8 remove atributos proibidos de bytes e de codificação do cabeçalho do pacote, usa o namespace canônico de identificação PDF/A, grava part=4 e rev=2020, e seleciona a propriedade de conformidade correta de base, engineering ou arquivo associado

O pipeline de reparo nunca reescreve fluxos de conteúdo de páginas ou anotações, fontes, espaços de cor, transparência, imagens, operadores gráficos nem texto extraído

Reversão e auditabilidade

Os snapshots do grafo cobrem mutações de dicionários e bytes dos fluxos de metadados, de modo que a reversão restaura o cabeçalho original, o estado do trailer, o grafo de objetos, o payload XMP e o conteúdo das páginas

A sobrecarga com achados compartilhados anexa as ações de reparo, o status aplicado, não resolvido, falho ou revertido, as contagens de reparo, identificadores estáveis de regras, cláusulas, caminhos de objetos, números de objetos e localizações de páginas

Orçamentos de objetos, mutações, questões retidas, bytes decodificados e tokens de conteúdo impedem que arquivos adversariais transformem o reparo ou suas portas de validação em trabalho ilimitado

Exemplo

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;

APIs relacionadas