المطابقة: توجيه ConformanceMode وحدود التحقّق
لمحة سريعة
قسم بعنوان «لمحة سريعة»NextPDF\Conformance هو المُميِّز الوحيد الذي يُخبر الكاتب بعقد المنظمة الدولية للتوحيد القياسي (ISO) الذي يستهدفه ملف Portable Document Format (PDF). تُصدِر المكتبة البنى التي يحدّدها ذلك العقد. لكنها لا تشهد، ولا تستطيع أن تشهد، بمطابقة الملف الناتج. لا يستطيع الشهادة بالمطابقة إلا مدقّق خارجي.
التثبيت
قسم بعنوان «التثبيت»composer require nextpdf/core:^3نظرة مفاهيمية عامة
قسم بعنوان «نظرة مفاهيمية عامة»تُتيح وحدة Conformance نوعين عامّين. ConformanceMode تعداد مدعوم بقيمة يحدّد اسم العقد المستهدف (Plain، PdfUa1، PdfUa2، PdfA2، PdfA3، PdfA3b، PdfA3u، PdfA4، PdfA4e، PdfA4f). أما ConformancePolicy فهو كائن قيمة غير قابل للتغيير يجمع وضعًا مع مفاتيح صرامة مستقلة.
الوضع هو المصدر الوحيد للحقيقة لبوابات الكاتب اللاحقة. قبل وجود هذا التعداد، كان المحرّك يستنتج ما إذا كان المستند موسومًا وفق المواصفة من أعلام متفرّقة. تُعيد ConformanceMode::isTagged()، وisAccessibility()، وisArchival()، وpdfaPart()، وpdfaConformanceLetter()، وrequiresPdf17() إجابةً مُنمَّطة يقرؤها الكاتب مباشرةً. وبذلك يظلّ الكتالوج، و/MarkInfo، وسلالة ترويسة الملف، وعلامات Extensible Metadata Platform (XMP) pdfaid متوائمةً مع النيّة المُعلَنة.
اقرأ حدود الدعم حرفيًّا. NextPDF Core يُصدِر البنى التي تحدّدها هذه المعايير. تحدّد ISO 19005-4:2020 §6.7.3 مخطط التعريف الذي يسجّل متغيّر PDF/A الذي يدّعيه الملف. وتنصّ ISO 19005-4:2020 على أنّ المطابقة تُحدَّد كما هو منصوص عليه في البند 5 منها: مقابل المتطلبات المعيارية، وباستخدام أداة فحص، لا بواسطة المكتبة المُنتِجة. وتؤطّر ISO 14289-2:2024 §6 المطابقة بوصفها خاصيةً يستوفيها ملف. تعيين وضع NextPDF مُدخَل ضروري لملف مطابق، لكنه ليس بحدّ ذاته نتيجة مطابقة.
يتّبع ذلك الانضباط نفسه في التمييز بين “المُتحقَّق منه” و”المُدّعى” ضمن مصفوفة دعم Cascading Style Sheets (CSS). لا تكون القدرة مُتحقَّقًا منها إلا عندما يجتمع لها اختبار ناجح أو تشغيل عرّافة مع بند مُستشهَد به. وكل ما عدا ذلك هو شيء تُصدِره المكتبة: مفيد، لكنه ليس ضمانة مطابقة. المطابقة تخصّ الملف النهائي والمدقّق، لا وعدًا من المكتبة. تحقّق من المُخرَج باستخدام veraPDF (انظر “المطابقة” أدناه).
ثمّة حدّ ثانٍ مهمّ في العمل الأرشيفي. تأليف PDF/A-4، بما في ذلك قاموس OutputIntent، وملف تعريف International Color Consortium (ICC) المضمَّن، ومخطط امتداد XMP، يأتي في امتداد nextpdf/pro، لا في Core. في تثبيت Core فقط، يرفع Document::enablePdfA() الاستثناء InvalidConfigException لأنّ القدرة security.pdfa غير مُسجَّلة. لا يزال Core يملك المُميِّز ConformanceMode، لذلك يعمل الاستبطان ومسار PDF/Universal Accessibility (PDF/UA-2) الموسوم، لكنه لا يؤلّف ملف PDF/A-4 بمفرده.
سطح الـ API
قسم بعنوان «سطح الـ API»| النوع | الصنف | الأعضاء الرئيسية |
|---|---|---|
NextPDF\Conformance\ConformanceMode | enum: string | Plain, PdfUa1, PdfUa2, PdfA2, PdfA3, PdfA3b, PdfA3u, PdfA4, PdfA4e, PdfA4f; isTagged(), isAccessibility(), isArchival(), requiresPdfUa2PageTabs(), pdfaPart(): ?int, pdfaConformanceLetter(): string, requiresPdf17(): bool |
NextPDF\Conformance\ConformancePolicy | final readonly class | __construct(ConformanceMode $mode = PdfUa2, bool $strictUa2 = false, bool $rejectUnvalidatedLang = false, …); lax(), strictUa2(), withUax9IsolateSupport(), withoutAstShadowMode(), withBlackPointCompensation(), withStrictOcspProducedAtTolerance(), withAllowStaleOcsp() |
يفرض ConformancePolicy ثابتًا واحدًا في مُنشئه: لا تنطبق مفاتيح PDF/UA-2 الصارمة إلا عندما يكون الوضع PdfUa2، ويفرض strictUa2 = true القيمة rejectUnvalidatedLang = true. وتطرح التركيبات غير المتسقة InvalidConfigException بدلًا من التدهور الصامت.
عيّنة كود — بداية سريعة
قسم بعنوان «عيّنة كود — بداية سريعة»<?php
declare(strict_types=1);
use NextPDF\Conformance\ConformanceMode;
$mode = ConformanceMode::PdfA4f;
// Introspect the declared contract — these drive writer-side gates.$mode->pdfaPart(); // 4$mode->pdfaConformanceLetter(); // 'F'$mode->requiresPdf17(); // false (PDF/A-4 is PDF 2.0 lineage)$mode->isArchival(); // trueعيّنة كود — إنتاج
قسم بعنوان «عيّنة كود — إنتاج»المسار المضمّن في Core والذي يمارس عقد مطابقة من طرف إلى طرف هو مسار PDF/UA-2 الموسوم. المثال القابل للتشغيل هو examples/31-pdfua2-tagged.php. وهو أيضًا هدف العرّافة لملف تعريف PDF/UA-2 الصارم.
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
$doc = Document::createStandalone();
// Set the tagged-PDF contract BEFORE writing content so the HTML pipeline// wires the TaggedContentEmitter at parser-construction time.$doc->enableTaggedPdf(lang: 'en');
$doc->setTitle('Accessible report');// … write content …
$doc->save(__DIR__ . '/out/report-ua2.pdf');
// The library has now emitted PDF/UA-2 structures. It has NOT asserted// conformance. Verify the file with the pinned veraPDF oracle://// php oracle/run.php pdfua.strict//// (Requires the veraPDF Docker image — opt-in; see "Conformance" below.)الحالات الحدّية والمزالق
قسم بعنوان «الحالات الحدّية والمزالق»- تأليف PDF/A-4 ميزة Premium. في تثبيت Core فقط، يطرح
Document::enablePdfA()الاستثناءInvalidConfigException(security.pdfaغير متاحة). يملك Core المُميِّز، لا إصدار OutputIntent/ICC/XMP. انظر/specifications/pdfa4/. - حالات المظلّة مقابل المتغيّر.
PdfA4هي حالة المظلّة وتُبلِغ عنpdfaConformanceLetter()فارغ. توجّه ISO 19005-4:2020 §6.7.3 الملف الذي لا يطابق PDF/A-4e ولا PDF/A-4f إلى عدم تقديم أيّpdfa:conformance. استخدمPdfA4e/PdfA4fفقط للمتغيّرين Annex B / Annex A. - PDF/UA-2 الصارم اختياري.
ConformancePolicy::lax()هو الافتراضي المتوافق مع الإصدارات السابقة. يفرضstrictUa2()القيمة/MarkInfo /Marked trueويرفض Best Current Practice (BCP) 47. تفعيله على وضع غيرPdfUa2يطرح استثناءً. isTagged()مُدرِكة للمتغيّر.Plain، وPdfA2، وPdfA3b، وPdfA4eتُبلِغ عن أنّها غير موسومة. يجب ألا يستنتج الكاتب شجرة بنية من الوضع الأرشيفي وحده.- الوضع الناجح ليس ملفًّا ناجحًا. تعيين
PdfA4لا يجعل المُخرَج ملف PDF/A-4 صالحًا. شغّل مدقّقًا.
الأداء
قسم بعنوان «الأداء»ConformanceMode وConformancePolicy نوعا قيمة خالصان. تحليل حالة التعداد وإرسال match هما O(1)، دون أيّ تخصيص يتجاوز كائن السياسة غير القابل للتغيير. ولا يضيفان أيّ كلفة قابلة للقياس إلى مسار الكتابة. الكاتب، لا المُميِّز، هو ما يهيمن على ميزانية الوحدة (wall_ms: 1500). عرّافة veraPDF خطوة تكامل مستمر (CI) خارج النطاق، وليست جزءًا من توليد المستند.
ملاحظات أمنية
قسم بعنوان «ملاحظات أمنية»تتحكم مفاتيح الصرامة في ConformancePolicy بسلوك أمني يفشل مغلقًا: securityPkiRfc5280Strict (التحقّق من المسار وفق Request for Comments (RFC) 5280 §6)، وstrictOcspProducedAtTolerance (نافذة الانحراف وفق RFC 6960 §4.2.2.1)، وallowStaleOcsp (الافتراضي false؛ رفض استجابات Open Certification Status Protocol (OCSP) التي تفتقر إلى nextUpdate). هذه الإعدادات الافتراضية محافِظة وستتحول إلى الصرامة في إصدار رئيسي مستقبلي وفق استراتيجية التوافق الخلفي المُوثَّقة. انظر وحدة الأمن ونموذج تهديد المشروع للاطّلاع على تفاصيل مسار التوقيع.
المطابقة
قسم بعنوان «المطابقة»لا يشهد NextPDF بالمطابقة. إنه يُصدِر البنى التي تحدّدها المعايير أدناه. ويقرّر مدقّق منفصل ما إذا كان ملف مطابقًا.
| المعيار | البند | ما الذي يفعله NextPDF Core | الحالة |
|---|---|---|---|
| ISO 14289-2:2024 (PDF/UA-2) | §6 | يُصدِر شجرة البنية، و/MarkInfo /Marked true (صارم)، و/Lang، وpdfuaid XMP عبر مسار Core الموسوم | ملف تعريف مُتحقَّق منه: pdfua.strict يتحقّق منه بواسطة عرّافة veraPDF (php oracle/run.php pdfua.strict) عندما يكون ثنائي veraPDF حاضرًا (بوابة اختيارية) |
| ISO 19005-4:2020 (PDF/A-4) | §6.7.3 | يُصدِر المُميِّز pdfaid:part / pdfa:conformance عبر ConformanceMode | مُدّعى (إصدار المُميِّز، مُختبَر وحدويًّا)؛ تأليف ملف PDF/A-4 متاح في Premium فقط |
| ISO 32000-2:2020 (PDF 2.0) | §7.5.2 | بنية catalog/document الأساسية | مُدّعى (سلوك المحرّك الأساسي) |
الدعم ليس مطابقةً. NextPDF Core يُصدِر بنى تعريف PDF/UA-2 وPDF/A-4، مع دليل تنفيذي في tests/Unit/Conformance/. لا يستطيع تأكيد أنّ ملفًّا مطابق لـ PDF/A-4 أو PDF/UA-2 إلا مدقّق يشغّل ملف التعريف المطابق. وفقًا للبند 5 من ISO 19005-4:2020، تحديد المطابقة مهمة المدقّق، لا مهمة المكتبة المُنتِجة.
بوابة veraPDF صادقة بشأن متطلّبها. تستدعي العرّافة (oracle/run.php، oracle/lib/OracleRunner.php) صورة Docker مثبَّتة لـ veraPDF. عندما تكون Docker أو الصورة غائبةً، يخرج المُشغِّل بالرمز 2 (فشل بنية تحتية) ولا يتحقّق من أيّ شيء. لذلك يكون ملف التعريف pdfua.strict بوابة مطابقة اختيارية. فهو يُثبت المطابقة فقط على الأجهزة التي يكون فيها ثنائي veraPDF حاضرًا. لا يأتي NextPDF بأيّ مدقّق مضمَّن ولا يقدّم أيّ ادعاء مطابقة في غيابه.
الاستشهادات مُعاد صياغتها من مجموعة امتثال NextPDF. وتُسجَّل ملخّصات reference_id الكاملة المكوَّنة من 64 حرفًا في ترويسة الصفحة وفي _normative-evidence-conf.md.
انظر أيضًا
قسم بعنوان «انظر أيضًا»- وحدة الامتثال — مدقّق PDF/R-1، وقواعد Arlington، وأدوات دورة الحياة
- وحدة إمكانية الوصول — مُصدِر المحتوى الموسوم لـ PDF/UA-2
- خريطة مواصفة PDF/A-4 — تغطية ميزات ISO 19005-4 وعدم التغطية الصريح
- خريطة مواصفة PDF/UA-2 — خريطة إمكانية الوصول لـ ISO 14289-2
- وحدة الأمن — مفاتيح صرامة مسار التوقيع