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 لنطاقي الأسماء pdfvtid و pdfxid/DPartRoot في الكتالوج مع شجرة DPart صالحة وفق §6.5: يجب أن تغطي /DPartRootNode و /NodeNameList المتوافقة مع XML NMTOKEN وروابط الآباء و /DParts كمصفوفة مصفوفات ومديَي الورقة /Start//End والإشارات /DPart لكل صفحة شجرة الصفحات مرة واحدة بالضبط بترتيب العمق أولاًGTS_XID و GTS_Scope و GTS_Env، و RecordLevel غير المباشر في DPartRoot المستخدم لنطاق Record، وحد PDF/VT-2s الوحيد لنطاق StreamFlateDecode، بحل كل معامل Do عبر الموارد الموروثة الفعلية لفرض أعداد SingleUse ورؤية الموارد وملكية المستلم الواحد لنطاق RecordIntent للصورة و Group الشفافية المعزولة المطلوب بفضاء ألوان دمج ومعاملات المحتوى الموسومة في محتوى Form مباشر أو متداخل/OutputIntents في الكتالوج مع OutputIntent يحمل /DestOutputProfile مضمَّنًا أو /DestOutputProfileRef خارجيًا مناسبًا لقاعدة PDF/X/ID في التذييل وغياب /Encrypt (يحظر PDF/X التعمية)xmp:CreateDate و xmp:ModifyDate في XMP لتكافؤ Info / XMPالنتيجة سجل TPdfVTValidationResult:
pvc1 (علامة PDF/VT-1)، pvc2 (علامة PDF/VT-2)، pvcNone (لا علامة PDF/VT)، أو pvcUnknown (العلامة موجودة وإصدار الملف غير معترف به)TPdfVTValidationIssues بقيم صفرية أو أكثر لعلامات و DPart ووراثة PDF/X وكائنات متكررة وتغليفpvviGtsScopeInvalidValue، pvviGtsScopeRecordWithoutRecordLevel، pvviGtsXidNotUuid، pvviGtsEnvMissing، pvviGtsXidInvalidType، pvviGtsEnvInvalidType، pvviGtsScopeStreamInVT1، pvviGtsScopeSingleUseRepeated، pvviGtsScopeRecordCrossesRecords، و pvviGtsResourceNotVisiblepvviGtsEncapsulatedInvalidType، pvviGtsEncapsulatedMissingScope، pvviGtsEncapsulatedImageMissingIntent، pvviGtsEncapsulatedGroupInvalid، و pvviGtsEncapsulatedOptionalContentConformance مستوى PDF/VT حقيقيًا و Issues فارغةValidatePdfVT للقراءة فقط. يفحص علامات
تنسيق الملف ودلالات شجرة DPart المختارة ونطاق XObject المتكرر وتغليفه،
وتزاوج PDF/VT مع قاعدة PDF/X بدقة، وخواص
XMP سواء كُتبت عناصرًا أم سمات RDF. اقرنه
بمحرك PDF/X preflight للتحقق الكامل على مستوى المحتوى، ولكل PDF/VT-2 مع InspectPdfVT2sStream أو مُصادِق مجموعات ملفات كامل آخر. PDF/VT-2s مستوى امتثال تيار MIME
الذي تُشار إليه نسخته بترويسة تيار MIME في
ISO 16612-2 Annex A لا بقيمة pdfvtid:GTS_PDFVTVersion
على مستوى الملف
pvviMissingDPartRoot عندما يفتقد الكتالوج تسلسل /DPartRoot صالح الاستخدام أو عندما تخالف الشجرة متطلبات §6.5 مثل مصفوفات /DParts تالفة، أو خلط /Start مع /DParts، أو ازدواج ملكية الأبناء، أو أسماء /NodeNameList غير صالحة أو تفاوت في العمق، أو مدايات صفحات لا تتبع ترتيب شجرة الصفحات، أو مدايات أحادية الصفحة تكرر /Start كـ /End، أو روابط /DPart للصفحة لا تشير إلى ورقة DPart المغطيةFlateDecode؛ وتبقى تيارات المحتوى بمرشحات أخرى أو متسلسلة متاحة لمحركات full-preflight المتخصصة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;