إما أن يطابق ملف PDF معيار PDF/A-3 أو لا يطابقه. فلماذا نفحص الملف نفسه بمحركين؟
السبب العملي هو أن مواصفة PDF/A كبيرة بما يكفي لأن تختلف تطبيقات صحيحة عند الحواف. في سير عمل يخضع للتدقيق، نتيجة “Pass” من محرك واحد ليست ضوءا أخضر كاملا، بل إشارة تحتاج إلى تأكيد مستقل.
PDF/A ليس خوارزمية واحدة بسيطة
يمتد PDF/A عبر عدة أجزاء من ISO 19005: PDF/A-1 وPDF/A-2 وPDF/A-3 وPDF/A-4، ومعها مستويات b وa وu وe وf. وفوق ذلك كله يعتمد على مواصفة PDF الأساسية ISO 32000. مساحة القواعد هنا آلاف الصفحات.
أمثلة على مناطق يحدث فيها اختلاف:
- الشفافية في PDF/A-2/3: مسموحة بشروط محددة، لكن تفسير الشروط قد يختلف.
- ملفات ICC اللونية: هل الملف مطلوب أم موصى به فقط؟ بعض المحركات تشدد أكثر من غيرها.
- بيانات الملفات المرفقة في PDF/A-3:
AFRelationshipو/AFوXMP يجب أن تتطابق بدقة. - تجزئة الخطوط: خطوط CID والـ subsets الجزئية قد تكشف اختلافات دقيقة بين المحركات.
هذا لا يعني بالضرورة وجود خطأ. إنه نتيجة طبيعية لمعيار معقد تنفذه فرق مختلفة من نص معياري طويل. لذلك تميل القطاعات المنظمة إلى طلب أكثر من تأكيد.
محرك مرجعي ورأي مستقل
veraPDF هو التطبيق المرجعي الذي ترعاه PDF Association. إذا قال veraPDF إن الملف “Pass”، فهذه أقوى إشارة يمكنك الحصول عليها من محرك واحد.
لكن أقوى إشارة من محرك واحد لا تعني دليلا كافيا للتدقيق. البنوك، أرشيفات السجلات الطبية، الجهات الحكومية وأنظمة الحفظ الطويل الأمد غالبا تطلب محركا ثانيا لأن:
- الطرف المستلم قد يستخدم مدققا آخر ويرفض الملف لاحقا.
- أي محرك قد يحتوي على خطأ، ولا يمكن كشفه بإعادة تشغيل المحرك نفسه.
- مبدأ التأكيدين المستقلين شائع في عوالم الامتثال.
في gPdf نجمع بين veraPDF ومحركنا المستقل المكتوب بـ Rust + WebAssembly. إنه تنفيذ آخر لنفس المواصفة. عندما ينجح المحركان معا، تكون النتيجة أقوى بكثير؛ وعندما يختلفان، تحصل على نقطة واضحة للتحقيق.
تقريران من رابط واحد
يتوفر هذا مجانا على gpdf.com/validator/. لا تحتاج إلى تسجيل دخول: ارفع الملف، وسيعمل veraPDF ومحرك gPdf على الحافة بالتوازي، ثم تحصل على تقريرين جنبا إلى جنب.
الاستخدامات المعتادة:
- قبل تسليم PDF/A: ارفع الملف، تأكد من نجاح المحركين، واحتفظ بتقارير JSON كدليل QA.
- محرك ينجح وآخر يفشل: قارن التقارير؛ غالبا ستجد المشكلة في XMP أو مرجع
/AFأو علاقة الملف المرفق. - كلاهما يفشل: أصلح الملف من مصدر التوليد.
- تدقيق دفعة أرشيف: افحص عينات عشوائية وأرفق النتائج بورقة العمل.
لا يتم تخزين الملف. تتم المعالجة في الذاكرة على Cloudflare Workers، ثم يتم التخلص من الملف بعد إنشاء التقرير.
ينطبق الأمر نفسه على الفوترة الإلكترونية
في Factur-X / ZUGFeRD لا يكفي فحص غلاف PDF/A-3؛ يجب أيضا التحقق من XML المدمج وفق EN 16931 CII. يستخدم gPdf محرك Mustang لذلك ويعرض النتيجة بجانب تقرير PDF/A.
الفكرة ليست عدم الثقة في أداة بعينها، بل بناء دليل امتثال من تطبيقين مستقلين.
TL;DR
نتيجة “Pass” من محرك واحد إشارة ناقصة. نجاح محركين مستقلين أقوى بكثير. استخدم validator، احصل على التقريرين، وأرفقهما مع QA أو التدقيق. وإذا كان الملف مولدا عبر gPdf API، فالمدقق يقدم إيصالا عاما لادعاء الامتثال.