function BuildPdfPreflightReport(Pdf: TPdf): TPdfPreflightReport; overload;
function BuildPdfPreflightReport(Pdf: TPdf; Standards: TPdfPreflightStandards): TPdfPreflightReport; overload;
function PdfPreflightIssueSeverity(Standard: TPdfPreflightStandard; const Code, Category: string): TPdfPreflightSeverity;
function PdfPreflightSeverityName(Severity: TPdfPreflightSeverity): string;
function PdfPreflightStandardName(Standard: TPdfPreflightStandard): string;
function PdfPreflightStatusName(Status: TPdfPreflightStatus): string;
function CreateDefaultPdfValidationRuleRegistry: TPdfValidationRuleRegistry;
function ValidatePdfFilesParallel(const FileNames: array of string; Registry: TPdfValidationRuleRegistry; const Options: TPdfBatchValidationOptions): TPdfBatchValidationReport;
| Type | Description |
|---|---|
TPdfPreflightStandard | 标准选择器,含 ppsPdfA、ppsPdfUa、ppsPdfE、ppsPdfX、ppsPdfR 和 ppsPdfVT |
TPdfPreflightStandards | BuildPdfPreflightReport 使用的集合类型;AllPdfPreflightStandards 选择全部受支持的标准 |
TPdfPreflightStatus | 每个标准的状态:pfsPass、pfsActionRequired 或 pfsReview |
TPdfPreflightSeverity | 问题严重级别,含 psevInfo、psevWarning 或 psevError;TPdfPreflightSeverities 是对应的过滤集合 |
TPdfPreflightIssue | 问题行,含 StandardName、问题代码、类别、严重级别、描述和 Recommendation,外加 MatchesText 不区分大小写搜索和 StableKey 标识 |
TPdfPreflightIssueCategoryCount | 由 IssueCategoryCounts 返回的聚合问题类别行 |
TPdfPreflightSeverityCount | 由 SeverityCounts 返回的聚合严重级别行,含 Severity、SeverityName 和 Count |
TPdfPreflightIssueCodeCount | 由 IssueCodeCounts 返回的聚合标准与问题代码行,含 StandardName、Code 和 Count |
TPdfPreflightStandardResult | 单个标准结果,含 StandardName、ConformanceName、IsCompliant、StatusName、Priority、NextAction、Issues 数组、ErrorCount 和 WarningCount 严重级别计数器、HighestSeverity、IssueCount,以及 HasIssueCode 问题代码查找 |
TPdfPreflightReport | 完整报告,含 SourceFile 名称、GeneratedAt 时间戳、ScopeNote、标准结果 Results 数组、ActionRequiredStandardCount、CompliantStandardCount、NonCompliantStandardCount、PassedStandardCount、ReviewStandardCount、StandardCount、HighestSeverity 和 TotalIssueCount 汇总计数器,FilterByStandards、FilterByCategory、FilterBySeverities、SearchIssues、FlattenIssues、HasIssueCode、FindStandard、Fingerprint、IssueCategoryCounts、IssueCodeCounts 和 SeverityCounts 查询辅助方法,以及 ToCsv、ToHtml、ToMarkdown、ToJson、ToNdjson、ToSarif、ToJUnitXml、ToText、ToXml 导出辅助方法和配套的 SaveXxxToFile 过程 |
TPdfValidationRule | 声明式配置条款,带 Id 与 Profile、Clause、严重级别、DependencyIds、FixHint 修复指引、IssueCode,以及由 PredicateKind 选择的问题、标准或自定义 Predicate |
TPdfValidationBudget | 限制所选规则(MaxRules)、报告的失败(MaxIssues)、访问的对象(MaxObjects)、递归(MaxRecursionDepth)、证据字节(MaxEvidenceBytes)、预留内存(MaxMemoryBytes)和耗时(TimeoutMilliseconds) |
TPdfValidationOptions | 选择 Profiles 和 Severities,提供 Budget,启用 FastFail,并通过 CancellationToken 支持协作式取消 |
TPdfValidationExecutionContext | 交给自定义谓词的有界执行上下文;Create 保存选项并启动运行时钟,Checkpoint、ConsumeEvidence、ConsumeObjects、EnterRecursion、LeaveRecursion、ReserveMemory 和 ReleaseMemory 强制执行预算,BudgetExceeded、BudgetReason、EvidenceBytes、ObjectsVisited、RecursionDepth、ReservedMemory、PeakReservedMemory 和 StartTick 公开实时计数器 |
TPdfValidationRuleRegistry | 线程安全的规则注册表;Create 和 Destroy 管理临界区,RegisterRule 和 Clear 修改已注册集合,Count 和 Snapshot 在锁下读取,Execute 以每条款证据和计时验证报告 |
TPdfBatchValidationOptions | 控制 WorkerCount、标准、嵌套的 ValidationOptions、文档级 FailFast,以及通过 CancellationToken 的取消 |
TPdfBatchValidationReport | 按输入顺序排列的每文档结果,带聚合问题分布、ElapsedMilliseconds、终态,以及 WorkerCount、PassedDocumentCount、FailedDocumentCount、CancelledDocumentCount 和 ErrorDocumentCount 总计 |
TPdfARepairPlan | 按依赖顺序排列的修复 Steps,按类别、安全性、重写需求、签名影响和阻塞状态分类,带 DocumentHasSignatures、AllowSignatureInvalidation、BlockedStepCount、AutomaticStepCount 和 ManualStepCount 汇总、IsExecutable,以及 ToJson JSON 输出 |
TPdfARepairCategory | 将修复工作分类为 parcSecurity、parcFonts、parcColour、parcAttachments、parcStructure、parcMetadata 或 parcOther |
TPdfARepairSafety | parsAutomatic、parsReviewRequired 或 parsManual |
TPdfARepairStep | 单个有序修复动作,带 Order、类别、IssueCode、动作、Evidence、依赖项和 Safety,外加 RequiresFullRewrite、InvalidatesSignatures 和 Blocked |
TPdfXProductionPreflightOptions | 控制 MinimumImageDpi 阈值、TreatTransparencyAsErrorBeforePdfX4 和 IncludeInformationalColourants 报告 |
TPdfXProductionPreflightReport | PDF/X Validation 结果加上每页 Pages 事实、HasOutputIntent、HasEmbeddedFonts、HasTransparency、HasOverprint、SeparationCount、DeviceNCount、MinimumEffectiveDpi、Issues 数组、ErrorCount、IsProductionReady,以及 ToJson JSON 输出 |
TPdfXProductionIssueKind | 对 pxpikOutputIntent、pxpikPageBox、pxpikFont、pxpikColourant、pxpikTransparency、pxpikOverprint、pxpikSeparation 和 pxpikImageResolution 问题分类 |
TPdfXProductionIssue | 单个聚焦的生产发现,带 Kind、严重级别、PageNumber、ObjectIndex 和 Evidence |
TPdfXProductionPage | PageNumber、HasMediaBox、HasTrimBox、HasBleedBox、HasArtBox、TextObjectCount、PathObjectCount、ImageCount、HasTransparency 和 MinimumEffectiveDpi 的每页事实 |
TPdfValidationPredicateKind | 选择 pvpkIssueAbsent、pvpkStandardPass 或 pvpkCustom 规则求值 |
TPdfValidationRuleStatus | pvrrsPass、pvrrsFail、pvrrsSkipped 或 pvrrsError |
TPdfValidationRunStatus | 报告 pvrsComplete、pvrsFastFailed、pvrsBudgetExceeded、pvrsCancelled 或 pvrsError |
TPdfValidationRuleResult | 每规则结果,含 RuleId、Profile、Clause、状态、Evidence、FixHint 修复指引和 ElapsedMilliseconds |
TPdfValidationRun | 单次有界注册表执行,含 Results 数组、PassedRuleCount、FailedRuleCount、SkippedRuleCount 和 ErrorRuleCount 计数器、ObjectsVisited、EvidenceBytes、PeakReservedMemory、ElapsedMilliseconds、IncompleteReason 以及一致性辅助成员 |
TPdfPreflightIssues, TPdfPreflightStandardResults | 保存问题行和每标准结果的动态数组 |
TPdfPreflightIssueCategoryCounts, TPdfPreflightSeverityCounts, TPdfPreflightIssueCodeCounts | 由类别、严重级别和稳定问题代码聚合器返回的动态数组 |
TPdfARepairSteps | 由 TPdfARepairPlan 存储的按依赖顺序排列的 PDF/A 修复步骤 |
TPdfXProductionPages, TPdfXProductionIssues | 每页生产事实和聚焦的 PDF/X 生产问题 |
TPdfValidationProfiles, TPdfValidationRules, TPdfValidationRuleResults | 所选配置名称、已注册的声明式规则和每规则执行结果 |
TPdfValidationRulePredicate | 自定义规则回调,通过有界执行上下文评估报告并返回诊断证据 |
TPdfBatchValidationItemStatus | 每文档 pbvisPending、pbvisPass、pbvisFail、pbvisCancelled 或 pbvisError 状态 |
TPdfBatchValidationStatus | 整批 pbvsComplete、pbvsPartial、pbvsCancelled 或 pbvsFailed 状态 |
TPdfBatchValidationItem | 单个输入文件,带其 Preflight 报告、规则 Validation 结果、状态、ErrorMessage 文本和 ElapsedMilliseconds |
TPdfBatchValidationItems | 并行验证返回的按输入顺序排列的每文档结果 |
BuildPdfPreflightReport 对活动的 TPdf 文档调用 ValidatePdfA、ValidatePdfUa、ValidatePdfE、ValidatePdfX、ValidatePdfR 和 ValidatePdfVT,并返回一个 TPdfPreflightReport
报告对每个所选标准包含一行:检测到的一致性、状态、优先级、下一步行动、问题代码、类别、Info / Warning / Error 严重级别、描述和建议。状态、严重级别、类别和问题代码计数器提供可复用的汇总数据
FindStandard、HasIssueCode、FlattenIssues、SearchIssues、FilterByStandards、FilterBySeverities 和 FilterByCategory 提供内存中的查询视图。过滤后的报告保留原始一致性与状态值,同时返回独立的问题数组
Fingerprint 返回有序标准与问题结果集合的小写 SHA-256 标识。源路径和生成时间戳被有意排除,因此等价的验证结果共享同一个指纹
每个 To* 导出都有对应的 Save*ToFile 方法。文件直接以 UTF-8 写入;CSV 保留 BOM 以便 Excel 识别,并中和以公式开头的单元格
TPdfValidationRuleRegistry 在单体标准验证器之外执行声明式配置条款。规则可以依赖较早的条款、选择内置问题或配置谓词,或提供记录有界证据的自定义谓词
TPdfValidationExecutionContext 提供协作式检查点以及针对对象、递归、UTF-8 证据和预留内存的显式计数器。运行会以未完成状态而非完整一致性结果来报告快速失败、取消或预算耗尽
ValidatePdfFilesParallel 为每个工作线程提供私有的 TPdf 文档,保持输入顺序,聚合问题代码计数,并为每个文件独立记录通过、失败、取消或加载错误
PDFium 跨文档并不线程安全,因此各 worker 在共享锁下逐个打开并检查文件,只有规则求值并行执行;加大 WorkerCount 加速的是规则密集的注册表,而不是文档加载
BuildPdfARepairPlan 将 PDF/A 证据按依赖顺序映射为安全、字体、色彩、附件、结构、元数据和剩余步骤。使签名失效的步骤会被阻塞,除非调用方提供显式授权
BuildPdfXProductionPreflight 将 PDF/X 配置结果与原生页面和图像事实、结构性色彩与叠印扫描以及页面框检查相结合。它在分辨率分析期间绝不解码或复制图像载荷
| Format | Shape |
|---|---|
| Text | 纯文本的来源、生成时间、范围说明、摘要、标准行、行动计划、问题类别和问题详情 |
| HTML | 独立 HTML 报告,带状态样式、问题类别表、标准表和问题表 |
| Markdown | 面向标准、问题类别、行动计划和问题详情的 Markdown 标题与表格 |
| JSON | 结构化对象,含 format、sourceKind、summary、issueCategoryCounts 和每标准问题数组 |
| CSV | 适合电子表格的行,由 RowType 标识:Summary、Standard、Category 和 Issue |
| SARIF 2.1.0 | CI 与代码扫描结果,带稳定规则 ID、严重级别、修复消息、属性和部分指纹 |
| JUnit XML | 每个所选标准一个测试用例,Action required 结果输出为失败,Review 结果输出为跳过的用例 |
| NDJSON | 每行一个摘要、标准或问题 JSON 对象,便于增量摄取而无需加载单个大型 JSON 文档 |
| XML | 原生预检 XML,带报告元数据、摘要属性、标准结果、严重级别、描述和建议 |
ValidatePdf* 方法相同的配置和文件检查Demo\Delphi\PreflightReport、Demo\Lazarus\PreflightReport 和 Demo\CBuilder\PreflightReport 演示标准选择、状态 / 优先级汇总行、生成报告中的问题类别计数、文本 / Markdown / JSON / CSV 预览切换以及 TXT / HTML / Markdown / JSON / CSV 导出。Delphi GUI 示例还包含一个行动计划预览,将同一数据聚焦为修复清单Demo\Delphi\PreflightReportCli 在可脚本化的控制台工作流中演示相同的报告路径。单文件模式接受输入、输出、可选密码、报告格式、standards=、attach= 和 failon=。plan / actionplan 格式为单文件和批处理运行写出文本修复清单。不带参数时,它会在可执行文件旁创建示例 PDF 并写出文本报告batch= 每行读取一个 PDF 路径,跳过空行和 # 注释,并从列表文件所在文件夹解析缺失的相对路径。目录模式扫描 batchdir= 中的 *.pdf 文件,可选择递归,并在处理前对发现的路径排序outdir= 将批处理报告路由到共享文件夹。如果多个输入解析到同一个报告路径,后续文件会获得 -2、-3 及更多后缀,而不是覆盖较早的报告summary=batch.txt、summary=batch.json 和 summary=batch.html 包含运行设置、聚合文件总数、标准状态总计和每个输入一行。summary=batch.csv 是面向行的清单,在每个输入行上重复运行设置并包含每文件状态计数attach=output.pdf 仅支持单文件模式。它将生成的报告作为文档级附件嵌入另一个 PDF 路径,绝不回写到输入文件failon=issues 匹配任何报告的问题,failon=action 匹配任何 Action required 行,failon=review 匹配 Action required 或 Review 行。CLI 在成功时退出 0,运行时错误退出 1,报告写出后所选 failon= 规则匹配时退出 2
uses FPdfPreflightReport;
var
Report: TPdfPreflightReport;
begin
Pdf1.FileName := 'C:\Incoming\job.pdf';
Pdf1.Active := True;
Report := BuildPdfPreflightReport(Pdf1, [ppsPdfA, ppsPdfX]);
Memo1.Lines.Text := Report.ToText;
Report.SaveHtmlToFile('C:\Incoming\job.preflight.html');
Report.SaveMarkdownToFile('C:\Incoming\job.preflight.md');
Report.SaveJsonToFile('C:\Incoming\job.preflight.json');
Report.SaveCsvToFile('C:\Incoming\job.preflight.csv');
Report.SaveSarifToFile('C:\Incoming\job.preflight.sarif');
Report.SaveJUnitXmlToFile('C:\Incoming\job.preflight.junit.xml');
Report.SaveNdjsonToFile('C:\Incoming\job.preflight.ndjson');
Report.SaveXmlToFile('C:\Incoming\job.preflight.xml');
end;