PDFium Delphi Component 文件

FPdfPreflightReport 单元

单元: FPdfPreflightReport
由内置 PDF 标准验证器构建可复用、可查询的报告对象,并导出文本、HTML、Markdown、JSON、CSV、SARIF 2.1.0、JUnit XML、NDJSON 或原生 XML

语法

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;

公共类型

TypeDescription
TPdfPreflightStandard标准选择器,含 ppsPdfA、ppsPdfUa、ppsPdfE、ppsPdfX、ppsPdfR 和 ppsPdfVT
TPdfPreflightStandardsBuildPdfPreflightReport 使用的集合类型;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
TPdfARepairSafetyparsAutomatic、parsReviewRequired 或 parsManual
TPdfARepairStep单个有序修复动作,带 Order、类别、IssueCode、动作、Evidence、依赖项和 Safety,外加 RequiresFullRewrite、InvalidatesSignatures 和 Blocked
TPdfXProductionPreflightOptions控制 MinimumImageDpi 阈值、TreatTransparencyAsErrorBeforePdfX4 和 IncludeInformationalColourants 报告
TPdfXProductionPreflightReportPDF/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
TPdfXProductionPagePageNumber、HasMediaBox、HasTrimBox、HasBleedBox、HasArtBox、TextObjectCount、PathObjectCount、ImageCount、HasTransparency 和 MinimumEffectiveDpi 的每页事实
TPdfValidationPredicateKind选择 pvpkIssueAbsent、pvpkStandardPass 或 pvpkCustom 规则求值
TPdfValidationRuleStatuspvrrsPass、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 配置结果与原生页面和图像事实、结构性色彩与叠印扫描以及页面框检查相结合。它在分辨率分析期间绝不解码或复制图像载荷

输出格式

FormatShape
Text纯文本的来源、生成时间、范围说明、摘要、标准行、行动计划、问题类别和问题详情
HTML独立 HTML 报告,带状态样式、问题类别表、标准表和问题表
Markdown面向标准、问题类别、行动计划和问题详情的 Markdown 标题与表格
JSON结构化对象,含 format、sourceKind、summary、issueCategoryCounts 和每标准问题数组
CSV适合电子表格的行,由 RowType 标识:Summary、Standard、Category 和 Issue
SARIF 2.1.0CI 与代码扫描结果,带稳定规则 ID、严重级别、修复消息、属性和部分指纹
JUnit XML每个所选标准一个测试用例,Action required 结果输出为失败,Review 结果输出为跳过的用例
NDJSON每行一个摘要、标准或问题 JSON 对象,便于增量摄取而无需加载单个大型 JSON 文档
XML原生预检 XML,带报告元数据、摘要属性、标准结果、严重级别、描述和建议

备注

示例

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;

参见

ValidatePdfA, ValidatePdfX