function ValidatePdfX: TPdfXValidationResult;
ValidatePdfX 會在開啟中的文件裡尋找 file-format markers,確認是否符合 PDF/X
pdfxid:GTS_PDFXVersion 的 XMP 中繼資料串流,必要時也會有 pdfxid:GTS_PDFXConformance,供 PDF/X-1a 與 PDF/X-3 使用pdfaExtension:schemas 說明,這是 XMP extension-schema 的慣例/GTS_PDFXVersion/OutputIntents 陣列,並透過 /DestOutputProfile 指向 OutputIntent dictionary/Title 項目,PDF/X 強烈建議要有/ID 陣列,以及沒有 /Encrypt,因為所有 PDF/X 版本都禁止加密xmp:CreateDate 與 xmp:ModifyDate 項目,用來維持 Info / XMP 一致回傳的結果會是 TPdfXValidationResult record
pxc1a(對應 "PDF/X-1")、pxc3("PDF/X-3")、pxc4("PDF/X-4")、pxcNone(沒有 PDF/X marker),或 pxcUnknown(有 marker 但無法辨識)TPdfXValidationIssues set,可能包含下列值中的一個或多個:pvxiMissingXmpMetadata、pvxiMissingPdfXIdentifier、pvxiMissingExtensionSchema、pvxiMissingInfoVersionEntry、pvxiInfoVersionMismatch、pvxiMissingOutputIntent、pvxiMissingIccProfile、pvxiMissingTitle、pvxiMissingTrailerId、pvxiEncryptionPresent、pvxiMissingXmpDatesValidatePdfX 是唯讀檢查,建議在把文件推進印前流程前先跑一次
pvxiInfoVersionMismatchConformance = pxcUnknown 且 Issues 是空集合的 recordpxcUnknown
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;