ความสอดคล้องกับ PDF/UA-2: โครงสร้างแบบติดแท็กที่ NextPDF สร้างสำหรับ ISO 14289-2
ภาพรวมโดยสรุป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสรุป”คำชี้แจงขอบเขต NextPDF สร้างโครงสร้างแบบติดแท็กที่รองรับ การจัดทำเอกสารที่เข้าถึงได้ แต่ไม่ได้ยืนยันความสอดคล้องกับ PDF/UA-2 — ตัวตรวจสอบ เป็นผู้ตัดสินเรื่องดังกล่าว
PDF/UA-2 คือ ISO 14289-2:2024 ซึ่งเป็นโปรไฟล์ด้านการเข้าถึงที่วางอยู่บน Portable Document Format (PDF) 2.0 แบบติดแท็ก NextPDF Core สร้างต้นไม้โครงสร้าง เนื้อหาที่ทำเครื่องหมาย แคตาล็อกและภาษาในโครงสร้าง รวมถึงตัวระบุ pdfuaid ผ่าน Document::enableTaggedPdf() ไลบรารีสร้างโครงสร้างที่เข้าถึงได้ ส่วนตัวตรวจสอบ PDF/UA เช่น verapdf --flavour ua2 เป็นผู้ตัดสินความสอดคล้อง ISO 14289-2 §8.1 นิยามความสอดคล้องว่าเป็นข้อกำหนดรูปแบบไฟล์ที่เอกสารต้องเป็นไปตาม โดยให้ตัวตรวจสอบเป็นผู้ประเมิน ไม่ใช่การกล่าวอ้างที่ผู้ผลิตประกาศเอง
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”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 แบบติดแท็กตาม ISO 32000-2 §14.7 (
StructTreeRootองค์ประกอบโครงสร้าง และ MCID) - มีการประกาศภาษาธรรมชาติ — §8.4.4: เอกสารและการเปลี่ยนภาษามี
Langกำกับ เมื่อใช้ConformancePolicy::strictUa2()แท็ก BCP-47 ที่ผิดรูปจะถูกปฏิเสธที่ขอบเขต API แบบ fail-fast แทนที่จะถูกตัดทิ้งอย่างเงียบๆ ระหว่างเขียนไฟล์ - รูปภาพมีคำบรรยายทางเลือก — §8.5.1: องค์ประกอบโครงสร้าง
Figureทุกตัวมีคำบรรยายทางเลือก - ตารางเชื่อมโยงส่วนหัวและข้อมูล — §8.2.5.26: การเชื่อมโยงเซลล์ header/data ของตารางถูกแสดงในเชิงโครงสร้าง
NextPDF สร้างโครงสร้างเหล่านี้ แต่ไม่ได้ดำเนินการประเมินความสอดคล้องตาม §8.1 ซึ่งเป็นบทบาทของตัวตรวจสอบ และมาตรฐานกำหนดให้หน้าที่นี้อยู่กับตัวตรวจสอบ
ขอบเขต API
หัวข้อที่มีชื่อว่า “ขอบเขต API”| เมท็อด | ผลลัพธ์ |
|---|---|
enableTaggedPdf(string $lang = 'en', ?ConformancePolicy $policy = null): static | ตั้งค่า ConformanceMode::PdfUa2 เชื่อมต่อ TaggedContentEmitter และตรวจสอบความถูกต้องของ $lang ตามนโยบาย โยน InvalidConfigException เมื่อนโยบายบังคับให้ตรวจสอบ Lang และ $lang ไม่ถูกต้อง |
beginTag()/endTag() | โครงสร้างแบบกำหนดเองสำหรับเนื้อหาที่ไม่ใช่ HTML ชนิดแบบคอนเทนเนอร์จะกลายเป็นองค์ประกอบจัดกลุ่ม ส่วนชนิดแบบใบจะได้รับ MCID |
ConformanceMode::requiresPdfUa2PageTabs(): bool | คืนค่า True สำหรับ 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 ที่ผิดรูปที่ขอบเขต API แทนที่จะปล่อยให้ล้มเหลวเฉพาะตอนตรวจสอบด้วย veraPDF ภายหลัง - การเปิดใช้งานซ้ำแบบ idempotent การเรียกสองครั้งจะอัปเดตภาษาโดยไม่สร้างต้นไม้โครงสร้างที่มีข้อมูลอยู่แล้วใหม่
- เอกสารติดแท็กที่ว่างเปล่า เอกสารติดแท็กที่ว่างเปล่าจะไม่ประกาศ PDF/UA-2 (
EmptyTaggedPdfDoesNotAdvertisePdfUa2Test): ตัวระบุจะไม่ถูกสร้างสำหรับเอกสารที่ไม่มีเนื้อหาจริง ดังนั้นไฟล์จึงไม่กล่าวอ้างเกินจริง
ประสิทธิภาพ
หัวข้อที่มีชื่อว่า “ประสิทธิภาพ”การสร้างต้นไม้โครงสร้างแปรตามจำนวนองค์ประกอบ งบประมาณคือเวลาตามนาฬิกา ≤ 1500 ms และค่าสูงสุด ≤ 64 MB สำหรับรายงานทั่วไป
หมายเหตุด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “หมายเหตุด้านความปลอดภัย”การติดแท็กเพื่อการเข้าถึงเป็นคุณสมบัติเชิงโครงสร้าง ไม่ใช่มาตรการควบคุมด้านความปลอดภัย โดยการออกแบบ การติดแท็กนี้เปิดเผยโครงสร้างเชิงตรรกะของเอกสารต่อเทคโนโลยีช่วยเหลือ ต้นไม้แท็กไม่ได้ให้คุณสมบัติด้านความลับ
การจับคู่ PDF/UA-2
หัวข้อที่มีชื่อว่า “การจับคู่ PDF/UA-2”| ข้อผูกพันตาม PDF/UA-2 | ข้อกำหนด ISO 14289-2 | สิ่งที่ NextPDF สร้าง |
|---|---|---|
| เนื้อหาจริงถูกติดแท็กในโครงสร้างเชิงตรรกะ | §8.2.2 | TaggedContentEmitter + StructureTree |
| มีการประกาศภาษาของเอกสาร / โครงสร้าง | §8.4.4 | แคตาล็อก /Lang ตรวจสอบความถูกต้องผ่าน Bcp47Validator |
| คำบรรยายทางเลือกของ Figure | §8.5.1 | alt → /Alt บนองค์ประกอบ Figure |
| การเชื่อมโยง header/data ของตาราง | §8.2.5.26 | โครงสร้าง TR/TH/TD จากตาราง HTML |
การอ้างอิงข้ามแท็ก → ISO 32000-2 §14.9
หัวข้อที่มีชื่อว่า “การอ้างอิงข้ามแท็ก → ISO 32000-2 §14.9”PDF/UA-2 วางอยู่บนโมเดล PDF แบบติดแท็กของ ISO 32000-2 องค์ประกอบโครงสร้างที่ NextPDF สร้างขึ้นจะอ้างอิงกับโครงสร้างเชิงตรรกะตาม ISO 32000-2 §14.7 (StructTreeRoot องค์ประกอบโครงสร้าง และ MCID) — chunk — และเนมสเปซโครงสร้างมาตรฐานที่นิยามไว้สำหรับ PDF 2.0 แผนผังบทบาทเชื่อมโยงองค์ประกอบ HTML (h1, p, table) เข้ากับชนิดโครงสร้างมาตรฐาน เพื่อให้ตัวตรวจสอบ UA-2 จดจำได้
การจับคู่ WCAG 2.2
หัวข้อที่มีชื่อว่า “การจับคู่ WCAG 2.2”โครงสร้างแบบติดแท็กเป็นพื้นฐานทางเทคนิคสำหรับเกณฑ์ความสำเร็จของ Web Content Accessibility Guidelines (WCAG) 2.2 — 1.1.1 (ทางเลือกที่ไม่ใช่ข้อความ ผ่าน §8.5.1 Figure /Alt), 1.3.1 (ข้อมูลและความสัมพันธ์ ผ่านต้นไม้โครงสร้าง) และ 1.3.2 (ลำดับที่มีความหมาย ผ่านลำดับการอ่าน) การสร้างโครงสร้างเป็นสิ่งจำเป็นแต่ยังไม่เพียงพอต่อความสอดคล้องตาม WCAG การตรวจสอบการเข้าถึงเป็นผู้ตัดสินเรื่องนี้ ไม่ใช่ไลบรารี
พฤติกรรมในโหมด FIPS
หัวข้อที่มีชื่อว่า “พฤติกรรมในโหมด FIPS”การสร้าง PDF/UA-2 ไม่มีการดำเนินการเข้ารหัสลับใดๆ โหมด Federal Information Processing Standards (FIPS) ไม่มีผลต่อเส้นทางการสร้างโครงสร้างแบบติดแท็ก
ความสอดคล้อง
หัวข้อที่มีชื่อว่า “ความสอดคล้อง”| ข้อกล่าวอ้าง | ข้อกำหนด | ข้อ | รหัสอ้างอิง (reference_id) |
|---|---|---|---|
สามารถระบุเวอร์ชัน PDF/UA ได้ด้วยเนมสเปซสคีมา pdfuaid (Table 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 |
การอ้างอิงใช้ตัวชี้แบบ clause-id และ reference_id ที่ชี้เข้าสู่คลังตรวจสอบ ไม่มีการนำข้อความของมาตรฐานมาทำซ้ำ