function ValidatePdfX: TPdfXValidationResult;
ValidatePdfX は開いている文書を調べ、ISO 15930 ファミリーが定めるファイル形式のマーカーと 選択されたコンテンツ規則を探します
pdfxid:GTS_PDFXVersion (および PDF/X-1a / PDF/X-3 向けの省略可能な pdfxid:GTS_PDFXConformance) を含む XMP メタデータストリームpdfaExtension:schemas の記述 (XMP 拡張スキーマの慣行)/GTS_PDFXVersion/DestOutputProfile 経由で埋め込み ICC プロファイルを持つ OutputIntent ディクショナリを参照するカタログの /OutputIntents 配列prtr / CMYK の構造チェックを通らなければなりません。Lab または XYZ の PCS と必要な双方向 LUT を含み、ストリームは /N 4 を宣言していること/Title エントリ (PDF/X はこれを強く推奨します)/ID 配列と /Encrypt の不在 (すべての PDF/X バージョンで暗号化は禁止されています)xmp:CreateDate と xmp:ModifyDate エントリpvxiInvalidOutputProfile は、未対応・不正・これらの要件と非互換のいずれかに当たる PDF/X-1a 出力プロファイルを報告します。/N 4 で偽装された RGB プロファイルや誤ったコンポーネント数も含まれます
このチェックはスパース検証器と互換性検証器の両方が行います。/DestOutputProfile の参照だけでは、許容できる PDF/X-1a プロファイルを確立できなくなりました
結果は TPdfXValidationResult レコードです:
pxc1a、pxc3、pxc4、pxc6 のいずれか。pxcNone と pxcUnknown は、認識された PDF/X レベルを確定しませんTPdfXValidationIssues 集合Conformance が実際の PDF/X レベルであり、Issues が空の場合に True を返しますValidatePdfX は読み取り専用の検査です。PDF/X ペイロードを印刷前工程へ投入する前に
呼び出せば、不適合をオペレーターに可視化できます。問題リストを必要としない
「これはどの PDF/X レベルか」という定番の確認には、より軽量な
PdfXConformance プロパティが適しています
pvxiInfoVersionMismatch を報告するのは、Info の /GTS_PDFXVersion と XMP の pdfxid:GTS_PDFXVersion が両方とも存在し、かつ一致しない場合だけですConformance = pxcUnknown で Issues 集合が空のレコードが返りますPDF/X-1、PDF/X-3、PDF/X-4、PDF/X-6 のいずれかが含まれることで認識されます。マーカーを認識しただけでは準拠の判定にはなりません
uses System.TypInfo;
var
Outcome: TPdfXValidationResult;
Issue: TPdfXValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\ad.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfX;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfXConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfXValidationIssue), Ord(Issue)));
end;