function ValidatePdfVT: TPdfVTValidationResult;
ValidatePdfVT는 ISO 16612-2:2010에서 정의한 file-format-level marker를 찾기 위해 열린 document를 순회합니다
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 중 하나의 file-set base를 사용해야 합니다(§6.2.2)pdfaExtension:schemas 설명/DPartRoot entry: /DPartRootNode, XML NMTOKEN-compatible /NodeNameList, parent link, /DParts array-of-arrays, leaf /Start//End range, per-page /DPart reference가 page tree를 depth-first order로 정확히 한 번 덮어야 합니다/DestOutputProfile가 있는 OutputIntent를 참조하는 Catalog /OutputIntents array(PDF/X-4에서 상속된 요구사항)/Encrypt가 없는 trailer /ID array(PDF/X는 encryption을 금지함)xmp:CreateDate 및 xmp:ModifyDate entry결과는 TPdfVTValidationResult record입니다
pvc1(PDF/VT-1 marker), pvc2(PDF/VT-2 marker), pvcNone(PDF/VT marker 없음), 또는 pvcUnknown(marker는 있지만 file-level version을 인식하지 못함)TPdfVTValidationIssues 집합으로, 0개 이상의 값이 포함됩니다: pvviMissingXmpMetadata, pvviMissingPdfVTIdentifier, pvviMissingExtensionSchema, pvviMissingPdfVTModDate, pvviModDateMismatch, pvviMissingDPartRoot, pvviMissingPdfXIdentifier, pvviMissingOutputIntent, pvviMissingIccProfile, pvviMissingTrailerId, pvviEncryptionPresent, pvviMissingXmpDatesValidatePdfVT는 읽기 전용입니다. file-format marker, 선택된 DPart tree semantics, 정확한 PDF/VT-to-PDF/X base pairing, 그리고 element 또는 RDF attribute로 작성된 XMP property를 검사합니다. 완전한 content-level verification에는 PDF/X preflight engine을 함께 사용하고, PDF/VT-2의 경우에는 완전한 file-set validator를 사용하세요. PDF/VT-2s는 MIME stream conformance level이며, 그 version은 file-level pdfvtid:GTS_PDFVTVersion 값이 아니라 ISO 16612-2 Annex A의 MIME stream header로 표시됩니다
pvviMissingDPartRoot는 catalog에 사용할 수 있는 /DPartRoot hierarchy가 없거나, tree가 잘못된 /DParts array, 혼합된 /Start와 /DParts, 중복된 child ownership, 잘못된 /NodeNameList name 또는 depth mismatch, page tree 순서를 따르지 않는 page range, /End로 /Start를 반복하는 single-page range, 또는 covering leaf DPart를 가리키지 않는 page /DPart link 때문에 §6.5 요구사항을 위반할 때 발생합니다pvviModDateMismatch는 pdfvtid:GTS_PDFVTModDate와 xmp:ModifyDate가 모두 존재하고 값이 다를 때만 발생합니다. SaveAsPdfVT는 항상 같은 값으로 씁니다ValidatePdfVT를 호출하면 Conformance = pvcUnknown이고 빈 Issues 집합을 가진 record를 반환합니다uses System.TypInfo;
var
Outcome: TPdfVTValidationResult;
Issue: TPdfVTValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\statements.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfVT;
Memo1.Lines.Add('수준: ' + GetEnumName(TypeInfo(TPdfVTConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfVTValidationIssue), Ord(Issue)));
end;