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
| CheckFileCompliance | Executa uma verificação de conformidade selecionada em um arquivo PDF e retorna 0 para sucesso ou um StringListID contendo linhas de problemas |
|---|---|
| CreatePreflightReport | Executa 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 |
| CreatePreflightReportEx | Retorna o mesmo relatório em formato texto (0), JSON (1), HTML (2) ou CSV (3). Valores de formato desconhecidos retornam para texto |
| SavePreflightReport | Grava o relatório em texto simples como UTF-8 e cria o diretório pai quando necessário |
| SavePreflightReportEx | Grava um relatório em texto, JSON, HTML ou CSV como UTF-8 e cria o diretório pai quando necessário |
| ComparePreflightReports | Compara 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
| Text | O 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 |
|---|---|
| JSON | Um único objeto com title, generated, input, checks, issueMode, sections e summary. Cada seção tem nome, status e um array de strings de problemas |
| HTML | Um 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 |
| CSV | As 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