function ValidatePdfVT: TPdfVTValidationResult;
ValidatePdfVT は開いている文書を調べ、ISO 16612-2:2010 が定める ファイル形式レベルのマーカーを探します:
pdfvtid:GTS_PDFVTVersion (§6.3 Table 2) と pdfvtid:GTS_PDFVTModDatepdfvtid:GTS_PDFVTModDate と xmp:ModifyDate の等価性 (§6.3 NOTE 1)pdfxid:GTS_PDFXVersion — PDF/VT-1 は PDF/X-4 でなければならず (§6.2.1)、PDF/VT-2 はファイルセットベースとして PDF/X-4p、PDF/X-5g、PDF/X-5pg のいずれかを使わなければなりません (§6.2.2)pdfaExtension:schemas の記述/DPartRoot エントリ: /DPartRootNode、XML NMTOKEN 互換の /NodeNameList、親リンク、/DParts の配列の配列、リーフの /Start//End 範囲、ページごとの /DPart 参照が、ページツリーを深さ優先順でちょうど 1 回ずつカバーしなければなりませんGTS_XID、GTS_Scope、GTS_Env の直接値型と許容値、Record スコープで使われる間接の DPartRoot RecordLevel、Stream スコープが PDF/VT-2s 限定であることの境界が含まれますFlateDecode のページ / Form XObject ストリーム。各 Do オペランドを実効的な継承リソース経由で解決し、Record スコープに対する SingleUse カウント、リソース可視性、単一受信者の所有権を強制しますIntent、ブレンディングカラースペースを持つ必須の分離トランスペアレンシー Group、直接または入れ子の Form コンテンツ内のオプショナルコンテンツのマーク済みオペレーター/DestOutputProfile または外部 /DestOutputProfileRef を持つ OutputIntent を含むカタログの /OutputIntents 配列/ID 配列と /Encrypt の不在 (PDF/X は暗号化を禁じます)xmp:CreateDate と xmp:ModifyDate エントリ結果は TPdfVTValidationResult レコードです:
pvc1 (PDF/VT-1 マーカー)、pvc2 (PDF/VT-2 マーカー)、pvcNone (PDF/VT マーカーなし)、または pvcUnknown (マーカーはあるがファイルレベルのバージョンが認識できない)TPdfVTValidationIssues 集合pvviGtsScopeInvalidValue、pvviGtsScopeRecordWithoutRecordLevel、pvviGtsXidNotUuid、pvviGtsEnvMissing、pvviGtsXidInvalidType、pvviGtsEnvInvalidType、pvviGtsScopeStreamInVT1、pvviGtsScopeSingleUseRepeated、pvviGtsScopeRecordCrossesRecords、pvviGtsResourceNotVisible がありますpvviGtsEncapsulatedInvalidType、pvviGtsEncapsulatedMissingScope、pvviGtsEncapsulatedImageMissingIntent、pvviGtsEncapsulatedGroupInvalid、pvviGtsEncapsulatedOptionalContent がありますConformance が実際の PDF/VT レベルであり、Issues が空の場合に True を返しますValidatePdfVT は読み取り専用です。ファイル形式のマーカー、選択された DPart ツリーの意味論、
再帰 XObject のスコープとカプセル化、PDF/VT から PDF/X ベースへの正確な組み合わせ、
そして要素として書かれていても RDF 属性として書かれていてもよい XMP プロパティを検査します。
コンテンツレベルの完全な検証には PDF/X プリフライトエンジンとの併用を、また PDF/VT-2 には
InspectPdfVT2sStream または別の完全なファイルセット検証器との併用を行ってください。PDF/VT-2s は MIME ストリームの適合レベルであり、そのバージョンは ISO 16612-2 Annex A の
ファイルレベルの pdfvtid:GTS_PDFVTVersion 値ではなく MIME ストリームヘッダーによって示されます
pvviMissingDPartRoot は、カタログに利用可能な /DPartRoot 階層がない場合、またはツリーが不正な /DParts 配列、/Start と /DParts の混在、子所有の重複、不正な /NodeNameList 名や深さの不一致、ページツリー順に従わないページ範囲、/Start を /End として繰り返す単一ページ範囲、カバーするリーフ DPart を指さないページの /DPart リンクなど、§6.5 の要件に違反した場合に発生しますFlateDecode ストリームを走査します。他のフィルタや連結フィルタを持つコンテンツストリームは、専用の完全プリフライトエンジンの担当のままですpvviModDateMismatch は、pdfvtid:GTS_PDFVTModDate と xmp:ModifyDate が両方とも存在し値が異なる場合にのみ発生します。SaveAsPdfVT は常に同じ値で両方を書き込みますConformance = pvcUnknown で Issues 集合が空のレコードが返ります
uses System.TypInfo;
var
Outcome: TPdfVTValidationResult;
Issue: TPdfVTValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\statements.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfVT;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfVTConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfVTValidationIssue), Ord(Issue)));
end;