function ValidatePdfA: TPdfAValidationResult;
تجوب ValidatePdfA المستند المفتوح بحثًا عن كل علامة توافق مع PDF/A يعرّفها ISO 19005-1 مع Cor.1:2007
pdfaid:part وpdfaid:conformance، وهو ما يخبر المدقق بمستوى PDF/A الذي كُتب المستند على أساسه (1a و1b و2b و3b ...)/ID مطلوبة وفق ISO 19005-1 6.1.3xmp:CreateDate وxmp:ModifyDate في حزمة XMP، وهي مطلوبة عندما يحمل Info dictionary القيم CreationDate / ModDate وفق 6.7.3 Example 2pdfaExtension:schemas التي تصف مخطط امتداد pdfaid، وهي مطلوبة بواسطة 6.7.8 / Cor.1النتيجة هي سجل TPdfAValidationResult
pac1a وpac1b وpac2a وpac2b وpac2u وpac3a وpac3b وpac3u وpacNone أو pacUnknown لعلامة PDF/A من دون مستوى معروف)TPdfAValidationIssues من قيم TPdfAValidationIssue تصف كل مشكلة تم العثور عليها. العلامات البنيوية هي pvaiMissingXmpMetadata وpvaiMissingPdfAIdentifier وpvaiMissingOutputIntent وpvaiMissingIccProfile وpvaiEncryptionPresent وpvaiMissingTrailerId وpvaiMissingXmpDates وpvaiMissingExtensionSchema كما تُبلّغ أيضًا عن انتهاكات على مستوى المحتوى لا يمكن لحقن العلامات إصلاحها مثل pvaiLevelAStructureMissing عند ادعاء Level A من دون بنية موسومة، وpvaiJavaScriptPresent، وpvaiForbiddenAction، وpvaiAdditionalActions، وpvaiEmbeddedFilesNonConforming، وpvaiLzwUsed، وpvaiTransparencyForbidden، وpvaiOptionalContentForbidden، وpvaiForbiddenAnnotation، وpvaiNeedAppearancesTrue، وpvaiXfaPresent، وpvaiFontNotEmbedded، وpvaiUnicodeMappingMissing عند ادعاء PDF/A-2u أو PDF/A-3u بينما لا تحمل الخطوط /ToUnicodeValidatePdfA فحص للقراءة فقط — فهو لا يغيّر المستند
ويمكن استدعاؤه بأمان مرات متكررة. استخدمه قبل تسليم PDF إلى
نظام أرشفة لإظهار حالات عدم التوافق للمشغل. وللتحقق الشائع من
نوع "ما المستوى هذا؟" من دون الحاجة إلى قائمة المشكلات، فضّل
الخاصية الأخف PdfAConformance
/NeedAppearances و/XFA، والخطوط التي تفتقر واصفاتها إلى برنامج خط مضمّن — إضافةً إلى العلامات البنيوية. وتُطبَّق فحوص الشفافية والمحتوى الاختياري والملفات المضمّنة وفقًا لجزء PDF/A المعلن (محظورة في PDF/A-1؛ ومسموح بها في PDF/A-2 وPDF/A-3). وهو لا يزال فحصًا سريعًا على مستوى البايت وليس مدقّقًا شاملًا (فهو لا يحلّل، مثلًا، مساحات الألوان ولا تغطية الخط لكل محرف)، لذا اقرنه بمدقّق كامل مثل veraPDF عندما تكون هناك حاجة إلى شهادة شاملة.Conformance = pacNone ومصفوفة Issues فارغةuses System.TypInfo;
var
Outcome: TPdfAValidationResult;
Issue: TPdfAValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\report.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfA;
Memo1.Lines.Add('المستوى: ' + GetEnumName(TypeInfo(TPdfAConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfAValidationIssue), Ord(Issue)));
end;