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

ISO 19005-4 (PDF/A-4): خريطة ميزات NextPDF

المعيار ⁨ISO 19005-4⁩:2020 الصادر عن المنظمة الدولية للتوحيد القياسي (⁨International Organization for Standardization⁩, ⁨ISO⁩) هو ملف الأرشفة لصيغة المستندات المحمولة (⁨Portable Document Format⁩, ⁨PDF⁩) 2.0، والمعروف باسم ⁨PDF/A-4.⁩ تربط هذه الصفحة هذا الملف بـ ⁨NextPDF⁩ من دون تضخيم نطاق الدعم: ما يُصدِره ⁨Core⁩، وما يضيفه امتداد nextpdf/pro، وما لا يغطّيه ⁨NextPDF⁩ صراحةً. يُصدِر ⁨NextPDF⁩ البنى المتعلقة بـ ⁨PDF/A-4⁩؛ ولا تؤكّد مطابقة الملف إلا أداة تحقّق.

Terminal window
composer require nextpdf/core:^3
# PDF/A-4 file authoring (OutputIntent + ICC + XMP) requires:
# composer require nextpdf/pro

يستند ⁨ISO 19005-4⁩:2020 إلى ⁨ISO 32000-2⁩:2020 (⁨PDF 2.0⁩)، بينما يستند ⁨PDF/A-2⁩ و⁨PDF/A-3⁩ إلى ⁨ISO 32000-1⁩:2008 (⁨PDF 1.7⁩). يعكس ⁨NextPDF⁩ هذا الاختلاف في النسب داخل ConformanceMode::requiresPdf17(). تُرجِع هذه الطريقة false لكل حالات ⁨PDF/A-4⁩ وtrue لـ ⁨PDF/A-2⁩ و⁨PDF/A-3.⁩

يُعرّف ⁨PDF/A-4⁩ ثلاثة أشكال للمطابقة. لا يستخدم الملف الأساسي حرف pdfa:conformance. يضبط ⁨PDF/A-4e⁩ (الملحق ⁨B⁩، المحتوى الهندسي / ثلاثي الأبعاد) القيمة pdfa:conformance = E. ويضبط ⁨PDF/A-4f⁩ (الملحق ⁨A⁩، الملفات المضمَّنة) القيمة pdfa:conformance = F. يحدّد ⁨ISO 19005-4⁩:2020 §6.7.3 مخطّط تعريف ⁨PDF/A⁩ في فضاء أسماء جمعية إدارة المعلومات الذكية (⁨Association for Intelligent Information Management⁩, ⁨AIIM⁩). وينصّ على أن الملف الذي لا يطابق ⁨PDF/A-4e⁩ ولا ⁨PDF/A-4f⁩ لا يوفّر أي مُدخَل pdfa:conformance. يعكس ⁨NextPDF⁩ هذا السلوك بدقة في ConformanceMode::pdfaConformanceLetter(): يُرجِع PdfA4 السلسلة الفارغة، ويُرجِع PdfA4e القيمة E، ويُرجِع PdfA4f القيمة F.

الحدّ الفاصل الجوهري بين الإصدارات هو تأليف ملف ⁨PDF/A-4.⁩ قاموس ⁨OutputIntent⁩، وملف الاتحاد الدولي للألوان (⁨International Color Consortium⁩, ⁨ICC⁩) المضمَّن، ومخطّط امتداد منصّة البيانات الوصفية القابلة للتوسعة (⁨Extensible Metadata Platform⁩, ⁨XMP⁩)، وضمانات تجزئة الخطوط إلى مجموعات فرعية، وحظر التشفير مُنفَّذة جميعها في PdfAManager الخاص بإصدار ⁨Enterprise.⁩ يأتي PdfAManager الخاص بإصدار ⁨Enterprise⁩ ضمن امتداد nextpdf/pro. في تثبيت يقتصر على ⁨Core⁩، يُطلِق Document::enablePdfA() الاستثناء InvalidConfigException لأن قدرة security.pdfa غير مُسجَّلة. يوضّح المثال القابل للتشغيل (examples/32-pdfa4-icc.php) ذلك بفحص سجلّ القدرات ثم التدرّج إلى الأدنى برسالة واضحة بدلاً من عرض تتبُّع للمكدّس.

لذلك، عند استخدام ⁨Core⁩ وحده، تقتصر واجهة ⁨PDF/A-4⁩ على المُميِّز فقط. يسجّل ⁨NextPDF⁩ أيّ متغايرة ⁨PDF/A-4⁩ يعلنها المستند. يُصدِر NextPDF علامتَي pdfaid:part = 4 / pdfa:conformance اللتين يحدّدهما المخطّط. إنتاج ملف ⁨PDF/A-4⁩ كامل — والتحقّق من مطابقته — خطوتان منفصلتان. تتطلّب الخطوة الأولى nextpdf/pro. وتتطلّب الخطوة الثانية ⁨veraPDF.⁩

الواجهةالإصدارما توفّره
ConformanceMode::PdfA4 / PdfA4e / PdfA4f⁨core⁩مُميِّز المتغايرة
ConformanceMode::pdfaPart()4⁨core⁩رقم جزء ⁨ISO 19005⁩
ConformanceMode::pdfaConformanceLetter()'' / 'E' / 'F'⁨core⁩حرف المطابقة §6.7.3
ConformanceMode::requiresPdf17()false⁨core⁩بوابة نسب ⁨PDF 2.0⁩
Document::enablePdfA()⁨pro⁩تأليف ⁨OutputIntent⁩ + ⁨ICC⁩ + ⁨XMP⁩؛ يُطلِق InvalidConfigException في ⁨Core⁩
<?php
declare(strict_types=1);
use NextPDF\Conformance\ConformanceMode;
// Core: introspect the declared PDF/A-4f contract.
$mode = ConformanceMode::PdfA4f;
$mode->pdfaPart(); // 4
$mode->pdfaConformanceLetter(); // 'F' (ISO 19005-4:2020 §6.7.3 / Annex A)
$mode->requiresPdf17(); // false (PDF/A-4 is PDF 2.0 lineage)
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
use NextPDF\Exception\InvalidConfigException;
use NextPDF\Support\CapabilityRegistry;
// PDF/A-4 file authoring requires the Premium extension. Probe first so a
// Core-only install gets a clear rationale, not a stack trace.
$registry = CapabilityRegistry::getInstance();
if (!$registry->get('security.pdfa')->isAvailable()) {
throw new InvalidConfigException(
configKey: 'security.pdfa',
givenValue: 'Core-only install',
expectedType: 'nextpdf/pro extension (Enterprise PdfAManager)',
);
}
$doc = Document::createStandalone();
$doc->enablePdfA(); // Emits OutputIntent + ICC + pdfaid XMP (Premium).
// … write content …
$doc->save(__DIR__ . '/out/archive-a4.pdf');
// The file now CARRIES PDF/A-4 structures. Conformance is still unproven
// until veraPDF asserts it:
//
// verapdf --flavour 4 out/archive-a4.pdf
  • لا يستطيع ⁨Core⁩ تأليف ملف ⁨PDF/A-4.⁩ يُطلِق enablePdfA() استثناءً في ⁨Core.⁩ ولا يكشف ⁨Core⁩ إلا المُميِّز وعلامات ⁨XMP⁩.
  • لا يُصدِر ⁨PDF/A-4⁩ الأساسي أي pdfa:conformance. وفقاً لـ ⁨ISO 19005-4⁩:2020 §6.7.3، لا يضبط حرف المطابقة إلا ⁨PDF/A-4e⁩ و⁨PDF/A-4f⁩. يُرجِع ConformanceMode::PdfA4 السلسلة الفارغة عمداً.
  • نسب ⁨PDF 2.0⁩، لا ⁨PDF 1.7.⁩ من الأخطاء الشائعة إعادة استخدام مسار ⁨PDF/A-3⁩ الذي يتوقّع %PDF-1.7. ⁨PDF/A-4⁩ هو ⁨PDF 2.0⁩؛ يُرجِع requiresPdf17() القيمة false لكل حالات ⁨PDF/A-4.⁩
  • التحقّق من ⁨ICC⁩ ميزة ⁨Premium.⁩ يتولّى PdfAManager الخاص بإصدار ⁨Enterprise⁩، لا ⁨Core⁩، التحقّقَ من ⁨ICC⁩ الخاص بـ ⁨OutputIntent⁩ المحدّد في ⁨ISO 19005-4⁩:2020 §6.2.2 (الرمز السحري acsp، وجدول الوسوم، ونقطة البياض ⁨D50⁩).
  • لا تثبت المكتبة مطابقة الملف. ضبط PdfA4f وإصدار العلامات لا يجعلان الخرج ملف ⁨PDF/A-4f⁩ صالحاً. تحقّق باستخدام ⁨veraPDF.⁩

واجهة ⁨PDF/A-4⁩ في ⁨Core⁩ هي استبطان صِرف لنوع قيمي: تفرّع match على تعداد، بتعقيد ⁨O⁩(1)، ودون تخصيص ذاكرة. يضيف مسار التأليف في ⁨Premium⁩ حزمة ⁨OutputIntent⁩ و⁨ICC⁩ أثناء الكتابة. تكلفته هي حجم الملف المضمَّن، وتُعالَج ضمن ميزانية الكاتب. يجري التحقّق بـ ⁨veraPDF⁩ خارج النطاق، لا أثناء التوليد.

يحظر ⁨PDF/A-4⁩ التشفير. يفرض PdfAManager الخاص بإصدار ⁨Enterprise⁩ ثابت حظر التشفير ويرتّب تطبيقه بالنسبة إلى enablePdfA() بحيث لا يستطيع المستدعي أن يجمع عن طريق الخطأ بين معيار التشفير المتقدّم في نمط جالوا/العدّاد (⁨Advanced Encryption Standard in Galois/Counter Mode⁩, ⁨AES-GCM⁩) ووضع الأرشفة. يرفض الحارس الاستباقي ضمن HasSecurity::enablePdfA() في ⁨Core⁩ التركيبة غير المدعومة قبل كتابة أي بايتات. راجع نموذج التهديدات للمشروع للاطّلاع على تفاصيل مسار الأرشفة.

هذه الصفحة خريطة للميزات، لا ادعاء مطابقة.

مجال ⁨ISO 19005-4⁩:2020البندتغطية ⁨NextPDF⁩الحالة
مخطّط تعريف المتغايرة§6.7.3يُصدِر ConformanceMode القيمة pdfaid:part = 4 وحرف pdfa:conformanceمُدَّعى (⁨Core⁩؛ مُختبَر بوحدات في tests/Unit/Conformance/)
بوابة نسب ⁨PDF 2.0⁩§6.7.3 / الأساسيُرجِع requiresPdf17() القيمة false لكل حالات ⁨PDF/A-4⁩مُتحقَّق منه (مختبَر باختبارات وحدات)
⁨OutputIntent⁩ + ⁨ICC⁩ مضمَّن§6.2.2PdfAManager الخاص بإصدار ⁨Enterprise⁩ (nextpdf/pro)⁨Premium⁩ فقط (لا ⁨Core⁩)
مخطّط امتداد ⁨XMP⁩، وتجزئة الخطوط إلى مجموعات فرعية، وحظر التشفير§6 / الملحق ⁨A/B⁩PdfAManager الخاص بإصدار ⁨Enterprise⁩ (nextpdf/pro)⁨Premium⁩ فقط (لا ⁨Core⁩)
تحديد المطابقةالبند 5لا يؤدّيه ⁨NextPDF⁩ — ⁨veraPDF⁩غير مغطّى صراحةً

الدعم لا يعني المطابقة — وهذه الصفحة تفصل بين الأمرين عمداً. (أ) يُصدِر ⁨NextPDF Core⁩ البنى التي يحدّدها ⁨ISO 19005-4⁩:2020 §6.7.3 لتعريف المتغايرة؛ وهذا تنفيذ تثبته tests/Unit/Conformance/ConformanceModePdfAVariantTest.php (ناجح). (ب) كون الملف مطابقاً لـ ⁨PDF/A-4⁩ ادعاء منفصل لا تجزم به إلا أداة تحقّق، وفقاً لـ ⁨ISO 19005-4⁩:2020 البند 5. ينصّ البند 5 على أن أداة الفحص تتولّى التحديد الفعلي للمطابقة مقابل المتطلّبات المعيارية. يقدّم ⁨NextPDF⁩ الادعاء (أ). ولا يقدّم ⁨NextPDF⁩ الادعاء (ب). تحقّق باستخدام ⁨veraPDF⁩ (verapdf --flavour 4 …، أو php oracle/run.php لإطار الأوراكل — الذي لا يعمل إلا عند توفّر برنامج ⁨veraPDF⁩ التنفيذي، وهو بوابة اختيارية).

العبارات “متوافق مع ⁨PDF/A-4⁩” و”مطابق تماماً” و”معتمَد لـ ⁨PDF/A-4⁩” غائبة عمداً عن هذه الصفحة. يُصدِر ⁨NextPDF⁩ البنى المتعلقة بـ ⁨PDF/A-4⁩؛ لكنه لا يضمن أن يكون الملف مطابقاً.

أُعيدت صياغة الاستشهادات من مدوّنة الامتثال الخاصة بـ ⁨NextPDF.⁩ تُسجَّل ملخّصات reference_id الكاملة المؤلَّفة من 64 حرفاً في الواجهة الأمامية للصفحة وفي docs/public/modules/core/_normative-evidence-conf.md.