مطابقة PDF/A-4: مخرجات NextPDF لـ ISO 19005-4
لمحة سريعة
قسم بعنوان «لمحة سريعة»بيان الحدود. يُنتج NextPDF مُخرَجات مصمّمة لمطابقة PDF/A-4. لا تُثبت المكتبة المطابقة؛ بل تُثبتها أداة تحقّق خارجية، مثل veraPDF.
معيار PDF/A-4 هو ISO 19005-4:2020، وهو ملف التعريف الأرشيفي المبني على PDF 2.0. يوفّر NextPDF Core مُميِّز ConformanceMode (PdfA4، PdfA4e، PdfA4f). وعند save()، يُصدر محرك Premium nextpdf/pro OutputIntent، وملف ICC المُضمَّن، ومخطط التعريف pdfaid الخاص بمنصّة البيانات الوصفية القابلة للتوسعة (XMP). دور المكتبة هو إنتاج المُخرَجات، أما أداة veraPDF فهي التي تقرّر المطابقة. يوضّح ISO 19005-4 §6.7.3 صراحةً أن خاصّيتَي pdfaid:part/pdfaid:rev “لا تحدّدان المطابقة بمفردهما”.
التثبيت
قسم بعنوان «التثبيت»composer require nextpdf/core:^3composer require nextpdf/pro # OutputIntent + ICC + XMP authoringيُسجّل Core القدرة security.pdfa، لكنّه يُبلِّغ عنها باعتبارها غير متاحة من دون nextpdf/pro. في هذه الحالة، تطرح enablePdfA() الاستثناء InvalidConfigException مع مسار للترقية بدلاً من إصدار ملف غير مطابق.
نظرة مفاهيمية عامة
قسم بعنوان «نظرة مفاهيمية عامة»تربط Document::enablePdfA(?object $version = null) مُدخَل تعداد PdfAVersion بحالة ConformanceMode. وتعود افتراضيًا إلى ConformanceMode::PdfA4 عند إدخال غير معروف ('4e' → PdfA4e، '4f' → PdfA4f). يفرض الوضع على الملف المطابق ثلاثة التزامات عند الإصدار:
- OutputIntent + ICC — يسمح §6.2.3 للملف المطابق بأن يُحدِّد خصائص ألوانه عبر OutputIntent خاص بـPDF/A-4 يُشير إلى دفق
DestOutputProfileمن اتحاد الألوان الدولي (ICC). وبموجب §6.2.4.1، يُعدّ ذلك أحد مسارَين مسموح بهما للوصول إلى اللون المستقل عن الجهاز (والآخر هو تحديد فضاءات اللون المستقلة عن الجهاز مباشرةً). OutputIntent هو المسار الذي يعتمده NextPDF، وليس متطلَّبًا غير مشروط في المعيار. - التعريف عبر
pdfaid— يتطلّب §6.7.3 وجود مخطط تعريف PDF/A في XMP على مستوى المستند (فضاء أسماء AIIMpdfaid) معpdfaid:part/pdfaid:rev. كما تُعيَّن في PDF/A-4e وPDF/A-4f القيمةpdfa:conformance(E / F). ينصّ §6.7.3 على أنّ الملف الذي لا يطابق أيًّا منهما يجب ألّا يوفّر قيمةpdfa:conformance. - تضمين الخطوط — يتطلّب §6.2.10 تضمين جميع الخطوط المستخدمة للعرض.
يُصدر NextPDF هذه المُخرَجات، لكنه لا يُجري تحديد المطابقة الوارد في §5. فهذه مهمّة veraPDF، ويحفظ §6.7.3 هذا التحديد لتلك العملية.
واجهة API
قسم بعنوان «واجهة API»| الدالّة | الأثر |
|---|---|
enablePdfA(?object $version = null): static | يوجّه إلى ConformanceMode::PdfA4/PdfA4e/PdfA4f؛ ويجدول OutputIntent + ICC + XMP عند save(). يطرح InvalidConfigException|PageLayoutException|CompressionException عند غياب nextpdf/pro. |
ConformanceMode::pdfaPart(): ?int | يُعيد جزء ISO 19005 الخاص بالوضع النشط (4 لـPdfA4*). |
ConformanceMode::pdfaConformanceLetter(): string | يُعيد حرف pdfa:conformance (E / F) أو قيمة فارغة. |
نموذج برمجي — بداية سريعة
قسم بعنوان «نموذج برمجي — بداية سريعة»<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;use NextPDF\Exception\InvalidConfigException;use NextPDF\Support\CapabilityRegistry;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/archival.pdf';
$registry = CapabilityRegistry::getInstance();if (!$registry->get('security.pdfa')->isAvailable()) { fwrite(STDERR, "PDF/A-4 requires nextpdf/pro.\n"); exit(1);}
try { $doc = Document::createStandalone(); $doc->enablePdfA(); // ConformanceMode::PdfA4 $doc->setTitle('Archival Record 2026-0042'); $doc->setLanguage('en'); $doc->writeHtml('<h1>Archival record</h1><p>Body.</p>'); $doc->save($out); // OutputIntent + ICC + XMP scheduled here} catch (InvalidConfigException $e) { fwrite(STDERR, $e->getMessage() . "\n"); exit(1);}
echo "Wrote {$out} — validate: verapdf --flavour 4 {$out}\n";نموذج برمجي — بيئة الإنتاج
قسم بعنوان «نموذج برمجي — بيئة الإنتاج»اجعل حُكم أداة التحقّق بوابة البناء. شغّل verapdf --flavour 4 على المُخرَج، وأفشِل البناء عند أي خروج بقيمة غير صفرية. حُكم أداة التحقّق هو البوابة؛ أمّا ما تُصدره المكتبة فهو مُدخَل إليها، وليس الحُكم نفسه أبدًا. راجع /cookbook/php/pdfa4-conformance-gate/ للاطّلاع على مسار البناء المُبوَّب الكامل.
الحالات الحدّية والمزالق
قسم بعنوان «الحالات الحدّية والمزالق»- فعِّل قبل المحتوى. استدعِ
enablePdfA()قبل إضافة المحتوى. فالتفعيل بأثر رجعي لا يُعيد معالجة الكائنات المكتوبة سابقًا. - لا تشفير. يحظر PDF/A المفتاح
Encrypt. لا تستدعِsetEncryption()في مستند PDF/A. التشفير يخصّ السرّية، لا سلامة الأرشفة، والاثنان متنافيان هنا. -
pdfa:conformanceمشروطة. يُعيّنها PDF/A-4e وPDF/A-4f فقط. إصدارها في ملف PDF/A-4 عادي هو بحدّ ذاته انتهاك للمطابقة (§6.7.3) — وحالةConformanceModeتمنع ذلك بحكم تصميمها. - مرفقات PDF/A-4f. يجب أن تحمل الملفات المُضمَّنة في ملف PDF/A-4f المفتاحَين
FوUF(ويُوصى بـDesc) بموجب §6.7.5. وهذا يدعم مسار ZUGFeRD/Factur-X الهجين.
الأداء
قسم بعنوان «الأداء»يُضيف تضمين OutputIntent + ICC دفق ICC ثابت الحجم (ملف فضاء العمل) وحزمة XMP عند save(). حدود الميزانية هي زمن جداري ≤ 1500 ms وذروة ≤ 128 MB لمستند نموذجي.
ملاحظات أمنية
قسم بعنوان «ملاحظات أمنية»يمنع PDF/A-4 التشفير. ملف التعريف قيد للأرشفة وطول العمر، وليس ضابطًا أمنيًا. حفظ المفاتيح وسياسة جهة التحقّق خارج نطاق ملف التعريف هذا؛ راجع مركز الثقة.
إقامة البيانات وتدابير التخفيف الخاصة بمعلومات تحديد الهوية الشخصية
قسم بعنوان «إقامة البيانات وتدابير التخفيف الخاصة بمعلومات تحديد الهوية الشخصية»يجري إصدار PDF/A-4 داخل العملية، ولا يكتب سوى المستند وملف ICC المُضمَّن وحزمة XMP. لا يغادر أي محتوى العملية. معلومات تحديد الهوية الشخصية (PII) في المحتوى المصدر هي مسؤولية الجهة المُدمِجة. ملف التعريف لا يحجب البيانات.
القياس عن بُعد الآمن وتنقية السجلّات
قسم بعنوان «القياس عن بُعد الآمن وتنقية السجلّات»لا يكتب المثال إلى STDERR سوى مسار المُخرَج وأمر أداة التحقّق. وهو لا يُسجّل أي بايتات من المستند. تلتزم الوصفة بـNEXTPDF_COOKBOOK_OUTPUT ولا تطبع PDF إلى STDOUT أبدًا.
نموذج التهديد
قسم بعنوان «نموذج التهديد»ملف PDF/A-4 لا يوفّر تحكّمًا في الوصول. يمكن لأي شخص يملك الملف قراءته. يدعم ملف التعريف استدامة العرض، لا السرّية. تعامل مع دفق ICC الخاص بـOutputIntent بوصفه عامًّا.
السلوك في وضع FIPS
قسم بعنوان «السلوك في وضع FIPS»لا يتضمّن إصدار PDF/A-4 أي تشفير. التوقيع الرقمي على ملف PDF/A-4 (يسمح PDF/A-4 §6.5 بملفات تعريف PAdES) شأن منفصل خاص بوصفة التوقيع، ويرث حالة FIPS الخاصة بتلك الوصفة. لا تقدّم هذه الصفحة أي ادعاء بخصوص التوقيع.
المطابقة
قسم بعنوان «المطابقة»| الادعاء | المواصفة | البند | reference_id |
|---|---|---|---|
| يجوز لملف PDF/A-4 أن يُحدِّد خصائص ألوانه عبر OutputIntent خاص بـPDF/A يُشير إلى ملف ICC من نوع DestOutputProfile. | ISO 19005-4 | §6.2.3 | |
| يجوز تحديد اللون المستقل عن الجهاز مباشرةً أو بطريقة غير مباشرة عبر DestOutputProfile الخاص بـOutputIntent (أي عبر أحد مسارَين مسموح بهما). | ISO 19005-4 | §6.2.4.1 | |
| يُحدَّد إصدار PDF/A عبر مخطط تعريف PDF/A (pdfaid) في XMP الخاص بالمستند. | ISO 19005-4 | §6.7.3 | |
| لا تحدّد pdfaid:part / pdfaid:rev المطابقة بمفردهما؛ ويُجرى التحديد بموجب البند 5. | ISO 19005-4 | §6.7.3 | |
| الملف الذي لا يطابق PDF/A-4e ولا PDF/A-4f يجب ألّا يوفّر قيمة pdfa:conformance. | ISO 19005-4 | §6.7.3 | |
| تتطلّب الملفات المُضمَّنة في PDF/A-4f المفتاحَين F وUF (مع التوصية بـDesc). | ISO 19005-4 | §6.7.5 | |
| يجب تضمين جميع الخطوط المستخدمة في العرض. | ISO 19005-4 | §6.2.10 | |
| يعتمد استخدام الشفافية / اللون على OutputIntent مُعلَن. | ISO 19005-4 | §6.2.9 |
تتكوّن الاستشهادات من مُعرِّف البند إضافةً إلى مؤشّرات reference_id إلى مجموعة نصوص التحقّق. لا يُعاد إنتاج أي نص من المعايير؛ بل يُلخّص NextPDF البنود بكلماته الخاصة.