Livro de receitas de preflight

Este livro de receitas agrupa as APIs e demos de preflight em receitas orientadas para tarefas. Use a referência da API quando precisar de assinaturas exactas; use esta página quando precisar de um caminho funcional para uma aplicação, script de compilação ou tarefa de CI

Escolher um formato de saída

var
  PDF: THotPDF;
begin
  PDF := THotPDF.Create(nil);
  try
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.txt');
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.json', '', pfJSON);
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.html', '', pfHTML);
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.csv', '', pfCSV);
  finally
    PDF.Free;
  end;
end;

A saída de texto é estável ao nível dos bytes e amiga de diffs. JSON é adequado para ingestão em pipeline. HTML é autónomo e pode ser aberto directamente ou guardado como artefacto de CI. CSV usa colunas estáveis para fluxos de trabalho de folha de cálculo e relatórios em lote

Validar documentos PDF/VT

var
  PDF: THotPDF;
  Report: AnsiString;
begin
  PDF := THotPDF.Create(nil);
  try
    if not PDF.ValidatePDFVT('Input.pdf', Report) then
      WriteLn(string(Report));
  finally
    PDF.Free;
  end;
end;

O relatório PDF/VT centra-se na identificação ISO 16612-2 e na estrutura dos documentos-partes: XMP GTS_PDFVTVersion em texto de elemento ou forma de atributo RDF, correspondência da data de modificação, marcador base PDF/X, output intent, DPartRoot, DPartRootNode, NodeNameList e cobertura ao nível da página de DPart

Aplicar um perfil

var
  PDF: THotPDF;
  Report: AnsiString;
begin
  PDF := THotPDF.Create(nil);
  try
    Report := PDF.CreatePreflightReportWithProfile(
      'Input.pdf', '', 'project-preflight.ini', pfJSON);
  finally
    PDF.Free;
  end;
end;

Os perfis suprimem verificações nomeadas, avisos ou todos os conselhos. Use ValidatePreflightProfile antes de aplicar um perfil criado pelo utilizador quando falhar de forma fechada for mais importante do que ignorar silenciosamente um nome obsoleto

Criar um perfil reutilizável a partir de uma predefinição

var
  PDF: THotPDF;
  Profile: THPDFPreflightProfile;
begin
  PDF := THotPDF.Create(nil);
  try
    Profile := PDF.GetBuiltInPreflightProfile('compact');
    Profile.DisableWarnings := 'OpenAction,JavaScript,URIAction';
    PDF.SavePreflightProfile(Profile, 'compact-no-actions.ini');
  finally
    PDF.Free;
  end;
end;

Utilize MergePreflightProfiles para combinar uma predefinição com nomes específicos do projecto. Utilize DiffPreflightProfiles para rever a deriva do perfil antes de actualizar um ficheiro de configuração partilhado

Arquivar o relatório com o PDF

PDF.EmbedPreflightReportInPDF('Input.pdf', 'Input-with-report.pdf');
PDF.EmbedPreflightReportAsXMP('Input.pdf', 'Input-with-xmp-report.pdf');

O caminho de incorporação de texto acrescenta um bloco de comentário legível após o marcador EOF final. O caminho XMP acrescenta uma carga em formato RDF para fluxos de arquivo que analisam pacotes de metadados

Validar um relatório incorporado

var
  OriginalReport: AnsiString;
  CurrentReport: AnsiString;
begin
  if not PDF.LoadAndValidatePreflightReport(
    'Input-with-report.pdf', OriginalReport, CurrentReport) then
    WriteLn(string(PDF.ComparePreflightReports(OriginalReport, CurrentReport)));
end;

O caminho de validação compara a impressão digital incorporada com uma execução de preflight nova sobre os bytes de origem. O auxiliar de diff é orientado por linhas e afinado para relatórios de preflight do HotPDF

Executar uma passagem de reparação conservadora

var
  RepairsApplied: AnsiString;
begin
  if PDF.RepairPDFFromPreflightReport(
    'Broken.pdf', 'Broken-repaired.pdf', RepairsApplied) then
    WriteLn(string(RepairsApplied));
end;

O auxiliar de reparação mantém-se de propósito restrito. Trata bytes finais após o marcador EOF final e marcadores EOF em falta, mas não reconstrói tabelas de referências cruzadas nem reescreve streams

Agregar vários relatórios

Reports[0] := PDF.CreatePreflightReport('A.pdf');
Reports[1] := PDF.CreatePreflightReport('B.pdf');
Summary := PDF.AggregatePreflightReports(Reports);

A saída agregada lista uma linha de estado por PDF e totais para relatórios processados, falhas e avisos. É útil quando um pipeline precisa de um único resumo mesmo que os relatórios detalhados sejam guardados por ficheiro de entrada

Utilizar a ferramenta de linha de comandos

HotPDFPreflight Input.pdf -f json -o reports
HotPDFPreflight Input.pdf --pdfvt -o reports
HotPDFPreflight C:\Archive -r --preset compact -f text -o reports --aggregate reports\Aggregate.txt
HotPDFPreflight C:\Archive -r --profile project-preflight.ini -f html -o reports

A CLI replica o fluxo de trabalho da biblioteca: um ficheiro ou entrada de directório recursivo, saída em texto / JSON / HTML, palavra-passe opcional, perfil opcional, predefinição incorporada, progresso detalhado e resumo agregado

Criar um painel estático

PreflightDashboard C:\Archive C:\Archive\preflight-dashboard

A demo do painel escreve um index.html e relatórios HTML por ficheiro. Não é necessário servidor Web, por isso a saída pode ser publicada como artefacto estático

Adaptar para consumidores JSON ao estilo veraPDF

Report := PDF.CreatePreflightReport('Input.pdf');
JSON := PDF.ConvertPreflightReportToVeraPDFStyle(Report);

O adaptador mantém a semântica do HotPDF enquanto reestrutura falhas numa estrutura familiar de resultado de validação para ferramentas que já consomem JSON semelhante ao veraPDF

Tópicos relacionados