function ValidatePdfUa: TPdfUaValidationResult;
ValidatePdfUa は開いている文書を走査し、ISO 14289-1:2014 で定義された PDF/UA-1 ファイル形式マーカーを探します:
pdfuaid:part = 1 と、一致する pdfaExtension:schemas の説明(§5)を持つ XMP メタデータストリーム。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 set containing zero or more values: pvuaiMissingXmpMetadata, pvuaiMissingPdfUaIdentifier, pvuaiMissingExtensionSchema, pvuaiMissingDcTitle, pvuaiMissingStructTreeRoot, pvuaiMissingMarkInfo, pvuaiSuspectsTrue, pvuaiMissingDisplayDocTitle, pvuaiMissingLang, pvuaiEncryptionPresent, pvuaiMissingTrailerId, pvuaiMissingXmpDates, pvuaiFontNotEmbedded, pvuaiFontMissingToUnicode, pvuaiMissingTabsOrder, pvuaiFigureMissingAlt, pvuaiFormulaMissingAlt, pvuaiNoteMissingId.ValidatePdfUa は読み取り専用の検査であり、文書を変更せず、繰り返し呼び出しても安全です。PDF をアーカイブシステムやアクセシビリティチェッカーへ渡す前に使用し、非準拠をオペレーターへ提示します。問題リストが不要な一般的な「これは PDF/UA-1 か」の確認には、より軽量なPdfUaConformance property.
Conformance = pucUnknown and an empty Issues set.pvuaiSuspectsTrue when an explicit /Suspects trueが /MarkInfo に現れるか確認します。/Suspects キー自体がない文書は、この点では準拠とみなされます (仕様で禁止しているのはtrue).N 0 R); 既存キーは保持され、書き換え後のカタログでは辞書が直接辞書に正規化されます
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;