THotPDF.RepairPDFA4 Method

执行一个有界的对象图事务:应用确定性的 PDF/A-4 规范化并校验结果,然后要么提交整套安全修复,要么恢复原始文档状态

声明

function RepairPDFA4(
  const Options: THPDFPDFA4RepairOptions;
  out Report: THPDFPDFA4RepairReport;
  out Issues: THPDFPDFA4ValidationIssues): boolean; overload;

function RepairPDFA4(
  const Options: THPDFPDFA4RepairOptions;
  out Report: THPDFPDFA4RepairReport;
  out Issues: THPDFPDFA4ValidationIssues;
  out Findings: THPDFComplianceFindings): boolean; overload;

提交契约

安全修复边界

该方法可以规范化 PDF 2.0 header、补建缺失的 trailer ID、创建或修复 metadata stream 和字典、按 namespace URI 规范化 PDF/A 标识(同时保留任何合法的 RDF 前缀)、移除被禁止的 Catalog 条目,以及移除 alternate-presentation 结构

UTF-8 XMP 修复会移除被禁止的 packet header 字节和编码属性,改用规范的 PDF/A 标识 namespace,写入 part=4 和 rev=2020,并选择正确的 base、engineering 或 associated-file 合规属性

修复管线绝不改写页面或批注的 content stream、字体、色彩空间、transparency、图像、绘图算子,也不改写提取出的文本

回滚与可审计性

对象图快照覆盖字典变更和 metadata stream 字节,因此回滚能够恢复原始 header、trailer 状态、对象图、XMP payload 和页面内容

带共享 finding 的 overload 会附带修复动作、applied / unresolved / failed / rolled-back 状态、修复计数、稳定的规则标识符、条款、对象路径、对象编号和页面位置

对象、变更、retained-issue、解码字节和 content token 各项预算,防止恶意文件把修复本身或它的校验门槛变成无边界的工作

示例

var
  Options: THPDFPDFA4RepairOptions;
  Report: THPDFPDFA4RepairReport;
  Issues: THPDFPDFA4ValidationIssues;
begin
  Options := THPDFPDFA4RepairOptions.Default;
  Options.Profile := p4pAutomatic;

  if not PDF.RepairPDFA4(Options, Report, Issues) then
    raise Exception.Create('PDF/A-4 repair rolled back');

  if not Report.ValidationSucceeded then
    LogRemainingPDFA4Issues(Issues);
end;

相关 API