function ValidatePdfE: TPdfEValidationResult;
ValidatePdfE は開いている文書を調べ、ISO 24517-1:2008 が定める PDF/E-1 の ファイル形式レベルのマーカーを探します:
pdfe:ISO_PDFEVersion を含む XMP メタデータストリーム (§5 + §13.3)pdfaExtension:schemas の記述 (XMP Specification 2004 の拡張スキーマ要件、§13.1 経由で継承)/ISO_PDFEVersion (§5 の SHALL)/ID 配列 (§6.2)xmp:CreateDate と xmp:ModifyDate エントリ (ISO 19005-1 §6.7 から §13.1 経由で継承)結果は TPdfEValidationResult レコードです:
pec1 (PDF/E-1 識別子が見つかり空でない)、pecNone (PDF/E マーカーなし)、または pecUnknown (解析に失敗した、またはマーカーはあるが値が欠落)TPdfEValidationIssues 集合: pveiMissingXmpMetadata、pveiMissingPdfEIdentifier、pveiMissingExtensionSchema、pveiMissingInfoVersionEntry、pveiInfoVersionMismatch、pveiMissingTrailerId、pveiMissingXmpDatesConformance が実際の PDF/E レベルであり、Issues が空の場合に True を返しますValidatePdfE は読み取り専用の検査です — 文書を変更せず、繰り返し呼び出しても安全です。
PDF/E ペイロードを技術アーカイブへ投入する前に呼び出せば、このライブラリが検出できる
ファイル形式レベルの不適合を可視化できます。問題リストを必要としない
「これは PDF/E-1 か」という定番の確認には、より軽量な PdfEConformance プロパティが適しています
pveiInfoVersionMismatch を報告するのは、Info の /ISO_PDFEVersion と XMP の pdfe:ISO_PDFEVersion が両方とも存在し、かつ一致しない場合だけです。Info エントリが存在しない場合は pveiMissingInfoVersionEntry のみを報告します (偽の不一致は報告しません)Conformance = pecUnknown で Issues 集合が空のレコードが返ります
uses System.TypInfo;
var
Outcome: TPdfEValidationResult;
Issue: TPdfEValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\drawing.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfE;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfEConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfEValidationIssue), Ord(Issue)));
end;