Relatórios de preflight

Conformidade, inspeção de documentos, automação

Visão geral

O PDFlibPas pode executar suas verificações internas de conformidade PDF/A e PDF/UA-1 em um PDF externo e transformar o resultado em saídas de relatório reutilizáveis. Use as APIs de relatório quando um aplicativo ou pipeline de build precisar dos mesmos diagnósticos de CheckFileCompliance, mas não quiser gerenciar handles de listas de strings diretamente

O pipeline de relatórios é intencionalmente em camadas. CheckFileCompliance continua sendo a API de baixo nível que retorna handles de listas de problemas. CreatePreflightReport formata as verificações selecionadas em um corpo estável em texto simples. CreatePreflightReportEx converte o mesmo relatório em texto, JSON, HTML ou CSV para que todos os formatos compartilhem o mesmo status de sucesso ou falha e a mesma contagem de problemas

APIs da biblioteca

CheckFileComplianceExecuta uma verificação de conformidade selecionada em um arquivo PDF e retorna 0 para sucesso ou um StringListID contendo linhas de problemas
CreatePreflightReportExecuta verificações PDF/A, PDF/UA-1 ou ambas e retorna um relatório em texto simples com metadados de cabeçalho, uma seção por verificação e um resumo final
CreatePreflightReportExRetorna o mesmo relatório em formato texto (0), JSON (1), HTML (2) ou CSV (3). Valores de formato desconhecidos retornam para texto
SavePreflightReportGrava o relatório em texto simples como UTF-8 e cria o diretório pai quando necessário
SavePreflightReportExGrava um relatório em texto, JSON, HTML ou CSV como UTF-8 e cria o diretório pai quando necessário
ComparePreflightReportsCompara dois relatórios em texto simples, ignora linhas voláteis de carimbo de data e hora Generated: e retorna um diff compacto apenas quando o conteúdo estável muda

Contrato de formato

TextO corpo canônico do relatório. Ele contém Generated, Input, Checks, Issue mode, uma seção para cada verificação selecionada e um bloco Summary com Total issues e Result
JSONUm único objeto com title, generated, input, checks, issueMode, sections e summary. Cada seção tem nome, status e um array de strings de problemas
HTMLUm documento HTML UTF-8 independente. O relatório em texto é escapado em HTML e exibido dentro de um bloco pré-formatado, para que o conteúdo do relatório fique visível sem ser interpretado como marcação
CSVAs linhas usam as colunas fixas kind,section,status,code,message. As linhas meta carregam campos de cabeçalho, as linhas check carregam o status PASS/FAIL da seção, as linhas issue separam códigos numéricos de problema das mensagens e as linhas summary carregam os totais finais

Seleção de conformidade

As APIs de relatório usam uma máscara de bits para ComplianceTests: 1 seleciona PDF/A, 2 seleciona PDF/UA-1 e 3 seleciona ambos. Passar 0 também executa as duas verificações. Options usa atualmente o bit 1 para parar cada verificação selecionada após o primeiro problema; passe 0 para coletar todos os problemas relatados

Demonstração na linha de comando

O demo de console Delphi PreflightReport mostra o fluxo de relatórios sem adicionar interface específica ao aplicativo. Ele pode validar um único PDF, gerar saída formatada, comparar um novo relatório em texto com uma base ou processar um diretório em lote

PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.txt"
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.json" --json
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.csv" --format csv
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.txt" --compare "C:\Baselines\invoice.preflight.txt"
PreflightReport.exe --input-dir "C:\PDFs" --output-dir "C:\Reports" --recursive --format html

No modo de arquivo único, o código de saída é 0 quando as verificações selecionadas não relatam problemas, 1 para erros de linha de comando ou tempo de execução e 2 quando qualquer problema é relatado ou a comparação com a base é diferente. O modo de diretório grava um arquivo <basename>.preflight.<ext> por PDF e adiciona um arquivo preflight-summary.csv com caminho de origem, status de sucesso ou falha, contagem de problemas e caminho do relatório

Notas de comparação

ComparePreflightReports é definido para relatórios em texto simples. Ele deve receber o relatório de base em texto e o relatório em texto recém-gerado, mesmo quando a saída visível para o mesmo processamento for JSON, HTML ou CSV. O comparador normaliza as linhas Generated: porque os carimbos de data e hora mudam a cada execução; todas as outras linhas estáveis são comparadas em ordem com uma pequena janela de antecipação para manter os diffs de inserção e exclusão legíveis

Veja também

CheckFileCompliance, CreatePreflightReport, CreatePreflightReportEx, SavePreflightReport, SavePreflightReportEx, ComparePreflightReports, GetPDFUADiagnostics