function ValidatePdfUa: TPdfUaValidationResult;
ValidatePdfUa 会遍历已打开的文档,查找 ISO 14289-1:2014 定义的 PDF/UA-1 文件格式标记
pdfuaid:part = 1 以及匹配的 pdfaExtension:schemas 描述的 XMP 元数据流(§5)dc:title 条目(§7.1)StructTreeRoot(§7.1)— 这是文档能够携带标记的前提/MarkInfo << /Marked true /Suspects false >>(§7.1)/ViewerPreferences << /DisplayDocTitle true >>(§7.1)/Lang(§7.2)/ID 数组以及未加密状态xmp:CreateDate / xmp:ModifyDate(建议用于 Info/XMP 一致性)结果是一个 TPdfUaValidationResult 记录
puc1(找到 PDF/UA-1 标识符)、pucNone(没有 PDF/UA 标记)或 pucUnknown(解析失败)TPdfUaValidationIssues 集合,包含零个或多个值:pvuaiMissingXmpMetadata、pvuaiMissingPdfUaIdentifier、pvuaiMissingExtensionSchema、pvuaiMissingDcTitle、pvuaiMissingStructTreeRoot、pvuaiMissingMarkInfo、pvuaiSuspectsTrue、pvuaiMissingDisplayDocTitle、pvuaiMissingLang、pvuaiEncryptionPresent、pvuaiMissingTrailerId、pvuaiMissingXmpDates、pvuaiFontNotEmbedded、pvuaiFontMissingToUnicode、pvuaiMissingTabsOrder、pvuaiFigureMissingAlt、pvuaiFormulaMissingAlt、pvuaiNoteMissingIdValidatePdfUa 是只读检查 — 它不会修改文档,并且可以安全地重复调用。请在把 PDF 交给归档系统或无障碍检查器之前使用它,以便把不合规情况显示给操作员。对于常见的“这是 PDF/UA-1 吗”检查,如果不需要问题列表,建议使用更轻量的 PdfUaConformance 属性
Conformance = pucUnknown 且 Issues 为空的记录/Suspects true 时,验证器才会标记 pvuaiSuspectsTrue。完全缺少 /Suspects 键的文档在这一点上被视为合规(规范只禁止 true)N 0 R)提供,SaveAsPdfUa 仍会强制写入 ISO 14289-1 7.1 所要求的 /ViewerPreferences /DisplayDocTitle true 和 /MarkInfo /Marked true /Suspects false 条目;现有键会被保留,而在重写后的目录中该字典会被规范化为直接字典
uses System.TypInfo;
var
Outcome: TPdfUaValidationResult;
Issue: TPdfUaValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\report.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfUa;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfUaConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfUaValidationIssue), Ord(Issue)));
end;