تخطَّ إلى المحتوى

استكشاف أخطاء التحقق من PDF/A وPDF/UA وإصلاحها

تغطي هذه المدخلات حالات الفشل التي يطلقها المحرّك عند إبقاء المستند ضمن سمة تنسيق المستندات المحمولة/الأرشفة (⁨PDF/A⁩) أو تنسيق المستندات المحمولة/إمكانية الوصول الشامل (⁨PDF/UA⁩). أرقام البنود الواردة أدناه مأخوذة من مصدر المحرّك ورسائل الاستثناءات، وتعيد هذه الصفحة صياغتها. يُبلّغ المحرّك عن حالات فشل السمة التي يكتشفها؛ ولا يصادق على مطابقة المستند. استخدم أداة تحقق خارجية لها مجموعة قواعدها الخاصة للحصول على حكم المطابقة المعتمد.

مدخل: رفض التشفير في وضع ⁨PDF/A⁩

قسم بعنوان «مدخل: رفض التشفير في وضع ⁨PDF/A⁩»
  • العرض. NextPDF\Security\Exception\IncompatiblePdfAModeException برسالة تشير إلى أنّ عملية التشفير ممنوعة في وضع ⁨PDF/A.⁩
  • السبب المرجّح. جمع المسار بين وضع ⁨PDF/A⁩ وطلب التشفير. يستشهد المحرّك بالمنظمة الدولية للتوحيد القياسي (⁨ISO⁩) ‏19005-{1,2,3,4} §6.1.3: يجب ألّا يكون مفتاح Encrypt موجوداً في مقطورة ملف ⁨PDF/A.⁩ يرفض المحرّك هذا المزيج رفضاً مطلقاً، بصرف النظر عن ترتيب الاستدعاء.
  • الدليل / التشخيص. يُعيد getContext() القيمتين pdfa_mode وencryption_operation. يؤكّد اختبار مسار الفشل tests/SecurityScenarios/PdfAEncryptionRefusalTest.php أنّ الرفض يحدث سواء فعّلت ⁨PDF/A⁩ قبل استدعاء التشفير أو بعده.
  • الحل.
    1. حدّد ما يحتاجه المستند: مطابقة الأرشفة أو التشفير.
    2. في المستند الأرشيفي، أزِل استدعاء التشفير.
    3. في المستند المشفّر، أزِل استدعاء تفعيل ⁨PDF/A.⁩
    4. شغّل المسار مجدداً.
  • موضوع ذو صلة. التشفير والأذونات.

مدخل: حظر مرشّح الصور في وضع ⁨PDF/A-1⁩

قسم بعنوان «مدخل: حظر مرشّح الصور في وضع ⁨PDF/A-1⁩»
  • العرض. Pdf14FeatureRejectedException أثناء استيراد الصور، مع رسالة تذكر /JPXDecode أو /JBIG2Decode والبند ISO 19005-1:2005 §6.1.13.
  • السبب المرجّح. استورد بناء ⁨PDF/A-1⁩ صورةً تستخدم مرشّحاً أُضيف بعد ⁨PDF 1.4.⁩ يستهدف ⁨PDF/A-1⁩ مجموعة ميزات ⁨PDF 1.4⁩، لذلك يرفض PdfA1FeatureGuard تنسيق ⁨JPEG⁩ ‏2000 ‏(/JPXDecode) و⁨JBIG2⁩ ‏(/JBIG2Decode).
  • الدليل / التشخيص. يحتوي src/Writer/PdfA1FeatureGuard.php على قائمة المرشّحات المحظورة ويُطلق البند المُستشهَد به. يرفض هذا الحارس هذه المرشّحات في سمة ⁨PDF/A-1⁩ فقط؛ أمّا ⁨PDF/A-2⁩ و⁨PDF/A-3⁩ وسمة ⁨PDF 2.0⁩ فتسمح بها.
  • الحل.
    1. أعِد ترميز الصورة المصدرية من دون ⁨JPEG 2000⁩ أو ⁨JBIG2.⁩ على سبيل المثال، أعِد حفظها بصيغة ⁨JPEG⁩ أساسية أو صورة مضغوطة بـ ⁨Flate.⁩
    2. بدلاً من ذلك، استهدف ⁨PDF/A-2⁩ أو ⁨PDF/A-3⁩؛ فهما يسمحان بتلك المرشّحات.
    3. شغّل البناء مجدداً.
  • موضوع ذو صلة. مرجع المطابقة.

مدخل: خط غير مُضمَّن في وضع ⁨PDF/A⁩

قسم بعنوان «مدخل: خط غير مُضمَّن في وضع ⁨PDF/A⁩»
  • العرض. يفشل بناء ⁨PDF/A⁩ عند التحقق من الخط، أو تُبلّغ أداة تحقق خارجية عن خط غير مُضمَّن.
  • السبب المرجّح. استُخدمت محارف من خط لم يُضمَّن برنامجه. ينصّ عقد مدير ⁨PDF/A⁩ على وجوب تضمين كل خط، وعدم السماح بأي خط من خطوط ⁨standard-14⁩ من دون تضمين.
  • الدليل / التشخيص. يُعلن src/Contracts/PdfAManagerInterface.php الدالة validateFont(string $fontName, bool $isEmbedded, array $cmapForward) ويوثّق القاعدة: يجب تضمين كل خط، ولا يُسمح بأي خط من خطوط ⁨standard 14⁩ من دون تضمين. يتوفر الإنفاذ الفعلي ضمن nextpdf/pro.
  • الحل.
    1. حدّد الخط الذي أُبلغ عنه على أنّه غير مُضمَّن.
    2. هيّئ ذلك الخط بملف برنامج قابل للتضمين بدلاً من الاعتماد على وجه ⁨standard-14⁩ مدمج.
    3. لفهم تفاعل استبدال ⁨Base 14⁩، اقرأ مدخل الخطوط ووسم البنية.
    4. شغّل البناء مجدداً وأعِد التحقق.
  • موضوع ذو صلة. الخطوط ووسم البنية.

مدخل: وجود ⁨JavaScript⁩ وفشل التحقق من ⁨PDF/A⁩

قسم بعنوان «مدخل: وجود ⁨JavaScript⁩ وفشل التحقق من ⁨PDF/A⁩»
  • العرض. يفشل بناء ⁨PDF/A⁩ عند التحقق من ⁨JavaScript⁩، أو تُبلّغ أداة تحقق خارجية عن إجراء ⁨JavaScript.⁩
  • السبب المرجّح. يتضمن المستند أو أحد حقول النموذج إجراء ⁨JavaScript.⁩ يستشهد عقد مدير ⁨PDF/A⁩ بـ ⁨ISO 19005-4⁩:2020 §6.7.1، الذي يحظر إجراءات ⁨JavaScript.⁩
  • الدليل / التشخيص. يستشهد كلّ من PdfAManagerInterface::validateNoJavaScript() وvalidateNoJavaScriptActions() بالبند §6.7.1 في كتل التوثيق الخاصة بهما.
  • الحل.
    1. أزِل إجراء ⁨JavaScript⁩ من المستند أو حقل النموذج.
    2. إذا كان الإجراء ضرورياً للسلوك، فلا يمكن أن يكون المستند ⁨PDF/A.⁩ أنتِج نسخةً غير ⁨PDF/A⁩ لذلك الاستخدام.
    3. شغّل البناء مجدداً وأعِد التحقق.
  • موضوع ذو صلة. مرجع المطابقة.

مدخل: المخرجات الموسومة لا تُعلن عن ⁨PDF/UA-2⁩

قسم بعنوان «مدخل: المخرجات الموسومة لا تُعلن عن ⁨PDF/UA-2⁩»
  • العرض. لا يُتعرَّف على مستند بُني مع تفعيل وسم البنية بوصفه ⁨PDF/UA-2⁩، أو يغيب عنه ادّعاء ⁨PDF/UA-2.⁩
  • السبب المرجّح. شجرة البنية فارغة. لا يُعلن المحرّك عن ⁨PDF/UA-2⁩ لمستند لا يحتوي على بنية موسومة، لأنّ شجرة البنية الفارغة لا تستوفي السمة.
  • الدليل / التشخيص. يؤكّد اختبار مسار الفشل tests/Integration/Accessibility/EmptyTaggedPdfDoesNotAdvertisePdfUa2Test.php أنّ المستند الموسوم الفارغ لا يُعلن عن ⁨PDF/UA-2.⁩ هذا سلوك مُوثَّق للمحرّك، وليس عيباً.
  • الحل.
    1. تأكّد من أنّ المحتوى يُصدَر عبر مسار وسم البنية، بحيث تمتلئ شجرة البنية بدلاً من أن تبقى فارغة.
    2. تحقّق من أنّ تسلسلات المحتوى المعلَّم تنطبق على عناصر البنية.
    3. شغّل البناء مجدداً وأعِد فحص حالة ⁨PDF/UA-2.⁩
  • موضوع ذو صلة. الخطوط ووسم البنية.

مدخل: فشل ⁨PDF/UA-2⁩ بسبب لغة مفقودة أو غير صالحة

قسم بعنوان «مدخل: فشل ⁨PDF/UA-2⁩ بسبب لغة مفقودة أو غير صالحة»
  • العرض. يفشل فحص ⁨PDF/UA-2⁩ لأنّ مدخل اللغة مفقود أو ليس وسماً صالحاً.
  • السبب المرجّح. يفتقر المستند أو أحد عناصر البنية إلى لغة صالحة. يتطلّب ⁨PDF/UA-2⁩ إعلاناً بلغة طبيعية؛ وقيمة Lang المفقودة أو المُشوَّهة تُخفق في الفحص الصارم.
  • الدليل / التشخيص. يغطي اختبار مسار الفشل tests/Unit/Conformance/PdfUa2Section844LangStrictTest.php اشتراط اللغة الصارم. يجري التحقق من وسوم اللغة عبر src/Accessibility/Bcp47Validator.php؛ ويطلق الوسم غير الصالح src/Accessibility/InvalidBcp47TagException.php.
  • الحل.
    1. عيّن لغةً على مستوى المستند بوصفها وسماً صالحاً وفق الممارسة الفضلى الحالية (⁨BCP⁩) ‏47، على سبيل المثال en-US أو zh-Hant-TW.
    2. عندما يوجد مقطع بلغة مختلفة، عيّن اللغة على عنصر البنية ذاك.
    3. شغّل البناء مجدداً وأعِد التحقق.
  • موضوع ذو صلة. الخطوط ووسم البنية.
  • تنشأ حالات رفض ⁨PDF/A⁩ و⁨PDF/UA⁩ الموصوفة هنا داخل المحرّك. وهي مستقلّة عن حكم أداة التحقق الخارجية ولا تحلّ محلّه. شغّل أداة تحقق مثل ⁨veraPDF⁩ للحصول على النتيجة المعتمدة.
  • يُحلّ الكاتب الفعلي للكائنات المطلوبة لـ ⁨PDF/A⁩ (دفق بيانات وصفية لمنصّة البيانات الوصفية القابلة للتوسيع (⁨XMP⁩)، ونيّة الإخراج مع ملف تعريف للاتحاد الدولي لألوان الطباعة (⁨ICC⁩)) في وقت التشغيل من nextpdf/pro. وبتثبيت حزمة ⁨Core⁩ وحدها، لا تُصدَر تلك الكائنات؛ فالبناء المقتصر على ⁨Core⁩ ليس مُنتِجاً كاملاً لـ ⁨PDF/A.⁩
  • رفض التشفير مطلق ولا يتعلّق بالترتيب؛ فتفعيل ⁨PDF/A⁩ بعد استدعاء التشفير سيظل يطلق الرفض.

مسرد المصطلحات: نيّة الإخراج · شجرة البنية