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

مطابقة PDF/UA-2: البنية الموسومة التي يُصدرها NextPDF وفق ISO 14289-2

بيان الحدود. يُصدِر ⁨NextPDF⁩ البنية الموسومة التي تدعم إنشاء مستندات ميسّرة الوصول؛ لكنه لا يعلن المطابقة لمعيار ⁨PDF/UA-2⁩ — أداة التحقّق هي التي تُقرّر ذلك.

⁨PDF/UA-2⁩ هو ⁨ISO 14289-2⁩:2024، وهو ملف تعريف لإمكانية الوصول مبني على ⁨PDF⁩ 2.0 الموسوم. يُصدِر ⁨NextPDF Core⁩ شجرة البنية والمحتوى الموسوم ولغة الفهرس والبنية ومعرّف pdfuaid عبر Document::enableTaggedPdf(). تُنشئ المكتبة البنية اللازمة لإمكانية الوصول؛ أمّا أداة التحقّق من ⁨PDF/UA⁩، مثل verapdf --flavour ua2، فهي التي تُقرّر المطابقة. يُعرّف القسم §8.1 من ⁨ISO 14289-2⁩ المطابقة بأنها متطلّبات على صيغة الملف يجب أن يستوفيها المستند وفق تقييم أداة التحقّق، لا بوصفها ادّعاءً يصرّح به المُنتِج.

Terminal window
composer require nextpdf/core:^3

يُعدّ وَسْم ⁨PDF/UA-2⁩ قدرة من قدرات ⁨Core⁩‏ (security.tagged_pdf). لا تحتاج إلى حزمة ⁨Premium⁩ لإصدار البنية الموسومة نفسها.

يضبط Document::enableTaggedPdf(string $lang = 'en', ?ConformancePolicy $policy = null) الوضع ConformanceMode::PdfUa2 ويربط TaggedContentEmitter. ويُعدّ هذا الوضع المصدر الوحيد للحقيقة بشأن ما إذا كان المستند موسومًا وفق المواصفة؛ ثم يفي الكاتب بالالتزامات البنيوية التي يفرضها ⁨ISO 14289-2⁩:

  • يُوسَم المحتوى الفعلي — §8.2.2: يُدرَج كل جزء من المحتوى الفعلي غير المُصنَّف كقطعة أثرية ضمن البنية المنطقية، وتُوسَم القطع الأثرية بوصفها كذلك. ويستند ذلك إلى البنية الموسومة لـ ⁨PDF⁩ في القسم §14.7 من ⁨ISO 32000-2⁩ (StructTreeRoot وعناصر البنية ومعرّفات المحتوى الموسوم ⁨MCIDs⁩).
  • تُعلَن اللغة الطبيعية — §8.4.4: يحمل المستند وتحوّلات اللغة قيمة Lang. مع ConformancePolicy::strictUa2()، يُرفض وسم ⁨BCP 47⁩ المُشوَّه عند حدود واجهة البرمجة بأسلوب الفشل المبكّر، بدلًا من إسقاطه بصمت وقت الكتابة.
  • تحمل الأشكال أوصافًا بديلة — §8.5.1: لكل عنصر بنية من نوع Figure وصف بديل.
  • تربط الجداول الترويسات بالبيانات — §8.2.5.26: يُعبَّر بنيويًا عن علاقة خلايا ⁨header/data⁩ في الجدول.

يُصدِر ⁨NextPDF⁩ هذه البُنى، لكنه لا يُجري تقييم المطابقة الوارد في القسم §8.1؛ فذلك دور أداة التحقّق، والمعيار يحتفظ به لها.

الدالةالأثر
enableTaggedPdf(string $lang = 'en', ?ConformancePolicy $policy = null): staticيضبط ConformanceMode::PdfUa2، ويربط TaggedContentEmitter، ويتحقّق من $lang حسب السياسة. يرمي InvalidConfigException عندما تفرض السياسة التحقّق من ⁨Lang⁩ ويكون $lang غير صالح.
beginTag()/endTag()يوفّر بنية يدوية للمحتوى غير المكتوب بـ ⁨HTML⁩؛ فتصبح أنواع الحاويات عناصر تجميع، وتحصل الأنواع الطرفية على معرّفات ⁨MCIDs.⁩
ConformanceMode::requiresPdfUa2PageTabs(): boolيعيد صحيحًا مع PdfUa2 — ويقود ذلك فرض /Tabs /S على الصفحات.
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
use NextPDF\Conformance\ConformancePolicy;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/accessible.pdf';
$doc = Document::createStandalone();
$doc->enableTaggedPdf('en', ConformancePolicy::strictUa2()); // fail-fast Lang
$doc->setTitle('Accessible report 2026');
$doc->writeHtml('<h1>Quarterly report</h1><p>Body text.</p>'
. '<img src="chart.png" alt="Revenue rose 12% quarter on quarter">');
$doc->save($out);
echo "Wrote {$out} — validate: verapdf --flavour ua2 {$out}\n";

شغّل بوابة الإنتاج verapdf --flavour ua2 out.pdf، واجعل عملية البناء تفشل عندما تُبلّغ أداة التحقّق عن مخالفات. يؤكّد اختبار التكامل tests/Integration/Accessibility/VeraPdfUa2GoldenTest.php أن التثبيت الذهبي لمسار ⁨HTML⁩‏←⁨PDF⁩ الموسوم يجتاز ⁨veraPDF UA-2⁩ (يُتخطّى عند غياب ⁨veraPDF⁩). حُكم أداة التحقّق هو بوابة القبول، ويكون خَرْج المُصدِر هو مُدخَلها.

  • فعِّل أولًا. استدعاء enableTaggedPdf() بعد writeHtml() لا يوسم بأثر رجعي المحتوى المكتوب سابقًا.
  • اللغة الصارمة. مرّر ConformancePolicy::strictUa2() لرفض وسم ⁨BCP 47⁩ المُشوَّه عند حدود واجهة البرمجة بدلًا من الاكتفاء باكتشافه لاحقًا عند التحقّق بـ ⁨veraPDF⁩.
  • إعادة التفعيل المتعادلة. استدعاؤها مرّتين يحدّث اللغة دون إعادة بناء شجرة بنية مأهولة.
  • مستند موسوم فارغ. المستند الموسوم الفارغ لا يعلن مطابقته لـ ⁨PDF/UA-2⁩ (EmptyTaggedPdfDoesNotAdvertisePdfUa2Test): لا تُصدَر العلامة لمستند بلا محتوى فعلي، فلا يبالغ الملف في الادّعاء.

يتناسب إصدار شجرة البنية طرديًا مع عدد العناصر. الميزانية هي زمن جداري ≤ 1500 ⁨ms⁩ وذروة ≤ 64 ⁨MB⁩ لتقرير نموذجي.

وَسْم إمكانية الوصول بنيوي، وليس ضابطًا أمنيًا. فهو يكشف، بحكم التصميم، البنية المنطقية للمستند للتقنيات المساعِدة. لا تحمل شجرة الوسوم أي بُعد يتعلّق بالسرّية.

التزام ⁨PDF/UA-2⁩بند ⁨ISO 14289-2⁩إصدار ⁨NextPDF⁩
وَسْم المحتوى الفعلي ضمن البنية المنطقية§8.2.2TaggedContentEmitter + StructureTree
إعلان لغة المستند/البنية§8.4.4الفهرس /Lang، مع التحقّق عبر Bcp47Validator
الوصف البديل للشكل§8.5.1alt/Alt على عنصر ⁨Figure⁩
ربط ⁨header/data⁩ في الجدول§8.2.5.26بنية ⁨TR/TH/TD⁩ من جداول ⁨HTML⁩

الوسم ← الإحالة المرجعية إلى القسم §14.9 من ⁨ISO 32000-2⁩

قسم بعنوان «الوسم ← الإحالة المرجعية إلى القسم §14.9 من ⁨ISO 32000-2⁩»

يُبنى ⁨PDF/UA-2⁩ فوق نموذج ⁨PDF⁩ الموسوم في ⁨ISO 32000-2.⁩ تُطابَق عناصر البنية التي يُصدرها ⁨NextPDF⁩ مع البنية المنطقية في القسم §14.7 من ⁨ISO 32000-2⁩ (StructTreeRoot وعناصر البنية ومعرّفات ⁨MCIDs⁩) ومع فضاء أسماء البنية المعياري المُعرَّف لـ ⁨PDF 2.0.⁩ وتربط خريطة الأدوار عناصر ⁨HTML⁩‏ (h1, p, table) بأنواع البنية المعيارية كي تتمكّن أداة التحقّق من ⁨UA-2⁩ من التعرّف عليها.

البنية الموسومة هي الركيزة التقنية لمعايير النجاح في إرشادات الوصول إلى محتوى الويب (⁨WCAG⁩) 2.2 — 1.1.1 (البدائل غير النصية، عبر القسم §8.5.1 للشكل /Alt)، و1.3.1 (المعلومات والعلاقات، عبر شجرة البنية)، و1.3.2 (التسلسل ذو المعنى، عبر ترتيب القراءة). إصدار البنية ضروري لكنه غير كافٍ للمطابقة لـ ⁨WCAG⁩؛ فتدقيق إمكانية الوصول هو الذي يقرّر ذلك، لا المكتبة.

لا يُجري إصدار ⁨PDF/UA-2⁩ أي تعمية. ولا أثر لوضع المعايير الفيدرالية لمعالجة المعلومات (⁨FIPS⁩) على مسار البنية الموسومة.

الادّعاءالمواصفةالبند⁨reference_id⁩
يُحدَّد إصدار ⁨PDF/UA⁩ عبر فضاء أسماء مخطّط pdfuaid (الجدول 1).⁨ISO 14289-2⁩§5
تفرض المطابقة مع ⁨PDF/UA-2⁩ متطلّبات على صيغة الملف يجب أن يستوفيها المستند (تُقيّم أداة التحقّق المطابقة؛ ولا يصرّح بها المُنتِج).⁨ISO 14289-2⁩§8.1
يجب وَسْم المحتوى الفعلي ضمن البنية المنطقية.⁨ISO 14289-2⁩§8.2.2
يجب إعلان اللغة الطبيعية للمستند.⁨ISO 14289-2⁩§8.4.4
تتطلّب عناصر ⁨Figure⁩ وصفًا بديلًا.⁨ISO 14289-2⁩§8.5.1
يجب أن تربط بنية الجدول خلايا الترويسة والبيانات.⁨ISO 14289-2⁩§8.2.5.26
تستند البنية الميسَّرة إلى البنية المنطقية الموسومة لـ ⁨PDF⁩ في ⁨ISO 32000-2.⁩⁨ISO 32000-2⁩§14.7.2

الاستشهادات مؤشّرات تشير بمعرّف البند وبـ reference_id إلى مَجموعة التحقّق. ولا يُستنسَخ أي نص من المعيار.