function ValidatePdfUa: TPdfUaValidationResult;
تجوب ValidatePdfUa المستند المفتوح بحثًا عن علامات تنسيق الملف الخاصة بـ PDF/UA-1 التي يعرّفها ISO 14289-1:2014
pdfuaid:part = 1 ووصف pdfaExtension:schemas المطابق (§5).dc:title الإلزامي داخل حزمة XMP (§7.1).StructTreeRoot في catalog أو في مكان ما داخل الملف (§7.1)، وهو مطلوب لكي يحمل المستند الوسوم أصلًا/MarkInfo << /Marked true /Suspects false >> (§7.1)./ViewerPreferences << /DisplayDocTitle true >> (§7.1)./Lang مع علامة لغة BCP 47 (§7.2)./ID في ذيل الملف (Trailer) وغياب التشفير.xmp:CreateDate / xmp:ModifyDate (مُوصى به لتكافؤ Info/XMP).النتيجة هي سجل TPdfUaValidationResult
puc1 عند العثور على معرّف PDF/UA-1، أو pucNone عند غياب علامة PDF/UA، أو pucUnknown عند فشل التحليلTPdfUaValidationIssues تحتوي صفرًا أو أكثر من القيم التالية: pvuaiMissingXmpMetadata وpvuaiMissingPdfUaIdentifier وpvuaiMissingExtensionSchema وpvuaiMissingDcTitle وpvuaiMissingStructTreeRoot وpvuaiMissingMarkInfo وpvuaiSuspectsTrue وpvuaiMissingDisplayDocTitle وpvuaiMissingLang وpvuaiEncryptionPresent وpvuaiMissingTrailerId وpvuaiMissingXmpDates وpvuaiFontNotEmbedded وpvuaiFontMissingToUnicode وpvuaiMissingTabsOrder وpvuaiFigureMissingAlt وpvuaiFormulaMissingAlt وpvuaiNoteMissingIdValidatePdfUa فحص للقراءة فقط — فهو لا يغيّر المستند
ويمكن استدعاؤه بأمان مرات متكررة. استخدمه قبل تسليم PDF إلى
نظام أرشفة أو مدقق إتاحة لإظهار حالات عدم التوافق للمشغل. وللتحقق
الشائع من "هل هذا PDF/UA-1؟" من دون الحاجة إلى قائمة المشكلات،
فضّل الخاصية الأخف PdfUaConformance
Conformance = pucUnknown ومجموعة Issues فارغةpvuaiSuspectsTrue إلا عندما يظهر /Suspects true صراحةً في /MarkInfo. أما المستندات التي تفتقد مفتاح /Suspects بالكامل فتُعد متوافقة في تلك النقطة لأن المواصفة تحظر فقط trueN 0 R)؛ وتُحافَظ المفاتيح الموجودة وتُطبَّع القاموس إلى قاموس مباشر في catalog المعاد كتابتهuses System.TypInfo;
var
Outcome: TPdfUaValidationResult;
Issue: TPdfUaValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\report.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfUa;
Memo1.Lines.Add('المستوى: ' + GetEnumName(TypeInfo(TPdfUaConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfUaValidationIssue), Ord(Issue)));
end;