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؛ ولا تؤكّد مطابقة الملف إلا أداة تحقّق.
التثبيت
قسم بعنوان «التثبيت»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.
واجهة API
قسم بعنوان «واجهة API»| الواجهة | الإصدار | ما توفّره |
|---|---|---|
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.2 | PdfAManager الخاص بإصدار 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.
انظر أيضاً
قسم بعنوان «انظر أيضاً»- وحدة المطابقة — توجيه
ConformanceModeوأوراكل veraPDF - وحدة الامتثال — مدقّق PDF/R-1 وقواعد Arlington
- تخطيط مواصفة PDF/UA-2 — النظير الخاص بملف إمكانية الوصول