预检报告

合规, 文档检查, 自动化

概述

PDFlibPas 可以对外部 PDF 运行内置 PDF/A 与 PDF/UA-1 文件合规检查,并把结果转换为可复用的报告输出。当应用程序或构建流水线需要与 CheckFileCompliance 相同的诊断结果,但不想直接管理字符串列表句柄时,请使用这些报告 API

报告流水线有明确分层。CheckFileCompliance 仍是返回问题列表句柄的低层 API。CreatePreflightReport 将所选检查格式化为稳定的纯文本报告。CreatePreflightReportEx 将同一文本报告转换为 text、JSON、HTML 或 CSV,因此所有格式共享相同的通过/失败状态和问题数量

库 API

CheckFileCompliance对 PDF 文件运行一个选定的合规检查;通过时返回 0,否则返回包含问题行的 StringListID
CreatePreflightReport运行 PDF/A、PDF/UA-1 或两者,并返回纯文本报告,包含头部元数据、每项检查的独立分节以及最终摘要
CreatePreflightReportEx以 text(0)、JSON(1)、HTML(2)或 CSV(3)格式返回同一报告。未知格式值会回退为 text
SavePreflightReport以 UTF-8 写入纯文本报告,并在需要时创建父目录
SavePreflightReportEx以 UTF-8 写入 text、JSON、HTML 或 CSV 报告,并在需要时创建父目录
ComparePreflightReports比较两份纯文本报告,忽略易变的 Generated: 时间戳行;只有稳定内容变化时才返回紧凑 diff

格式约定

Text规范报告正文。包含 GeneratedInputChecksIssue mode、每项所选检查的分节,以及带 Total issuesResultSummary
JSON单个对象,包含 titlegeneratedinputchecksissueModesectionssummary。每个分节都有名称、状态和问题字符串数组
HTML独立 UTF-8 HTML 文档。文本报告经过 HTML 转义并显示在预格式化块内,因此报告内容可见且不会被解释为标记
CSV行使用固定列 kind,section,status,code,messagemeta 行保存头字段,check 行保存 PASS/FAIL 分节状态,issue 行把数字问题代码与消息拆开,summary 行保存最终合计

合规检查选择

报告 API 使用 ComplianceTests 位掩码:1 选择 PDF/A,2 选择 PDF/UA-1,3 同时选择两者。传入 0 也会运行两项检查。Options 当前使用位 1 表示每项所选检查在发现第一个问题后停止;传入 0 可收集所有报告的问题

命令行示例

Delphi PreflightReport 控制台示例展示不增加应用专用 UI 的报告流程。它可以验证单个 PDF、生成指定格式输出、把新文本报告与基线比较,或批量处理目录

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

单文件模式在所选检查没有问题时返回退出码 0,命令行或运行时错误返回 1,发现任何问题或基线比较不同返回 2。目录模式会为每个 PDF 写入一个 <basename>.preflight.<ext> 文件,并添加 preflight-summary.csv,其中包含源路径、通过/失败状态、问题数量和报告路径

比较说明

ComparePreflightReports 面向纯文本报告。即使同一次运行的人类可读输出是 JSON、HTML 或 CSV,也应向它传入基线文本报告和新生成的文本报告。比较器会规范化 Generated: 行,因为时间戳每次运行都会改变;其他稳定行按顺序比较,并使用较小的前看窗口保持插入和删除 diff 易读

另请参阅

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