ISO 19005-4 (PDF/A-4): การจับคู่ฟีเจอร์ใน NextPDF
ภาพรวมโดยย่อ
หัวข้อที่มีชื่อว่า “ภาพรวมโดยย่อ”International Organization for Standardization (ISO) 19005-4:2020 คือโปรไฟล์สำหรับการเก็บถาวรของ 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 เนื้อหาทางวิศวกรรม / 3D) กำหนด 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) การรับประกันการทำ font-subset และข้อห้ามการเข้ารหัสลับ พัฒนาไว้ใน PdfAManager รุ่น Enterprise PdfAManager รุ่น Enterprise มาพร้อมกับส่วนขยาย nextpdf/pro สำหรับการติดตั้งที่มีเฉพาะ Core Document::enablePdfA() จะส่ง InvalidConfigException เนื่องจากไม่ได้ลงทะเบียนความสามารถ security.pdfa ไว้ ตัวอย่างที่รันได้ (examples/32-pdfa4-icc.php) แสดงกรณีนี้โดยตรวจสอบรีจิสทรีความสามารถ แล้วลดระดับการทำงานพร้อมข้อความที่ชัดเจนแทนการแสดง stack trace
ดังนั้น เมื่อใช้เฉพาะ 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.0requiresPdf17()คืนค่าfalseสำหรับ PDF/A-4 ทุกกรณี - การตรวจสอบความถูกต้องของ ICC เป็นฟีเจอร์ Premium การตรวจสอบความถูกต้องของ OutputIntent ICC ตาม ISO 19005-4:2020 §6.2.2 (เมจิก
acspตารางแท็ก จุดขาว D50) ดำเนินการโดยPdfAManagerรุ่น Enterprise ไม่ใช่ Core - ไลบรารีไม่รับรองไฟล์ การตั้งค่า
PdfA4fและการปล่อยเครื่องหมายต่าง ๆ ไม่ได้ทำให้ผลลัพธ์เป็นไฟล์ PDF/A-4f ที่ถูกต้อง ตรวจสอบความถูกต้องด้วย veraPDF
ประสิทธิภาพ
หัวข้อที่มีชื่อว่า “ประสิทธิภาพ”ส่วนต่อประสาน PDF/A-4 ของ Core เป็นการตรวจสอบภายในแบบ value-type ล้วน ๆ ได้แก่ การส่งต่อด้วย enum match ที่เป็น O(1) และไม่มีการจองหน่วยความจำ เส้นทางการสร้างของ Premium เพิ่ม OutputIntent และแพ็กเก็ต ICC ระหว่างการเขียน ต้นทุนคือขนาดของโปรไฟล์ที่ฝังไว้ ซึ่งจัดการอยู่ภายในงบประมาณของตัวเขียน การตรวจสอบความถูกต้องด้วย veraPDF ทำงานนอกแบนด์ ไม่ได้ทำระหว่างการสร้าง
หมายเหตุด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “หมายเหตุด้านความปลอดภัย”PDF/A-4 ห้ามการเข้ารหัสลับ PdfAManager รุ่น Enterprise บังคับใช้ค่าคงที่ของข้อห้ามการเข้ารหัสลับ และจัดลำดับให้สัมพันธ์กับ enablePdfA() เพื่อให้ผู้เรียกใช้ไม่สามารถนำ Advanced Encryption Standard in Galois/Counter Mode (AES-GCM) ไปรวมกับโหมดการเก็บถาวรโดยไม่ตั้งใจได้ การ์ดเชิงรุกของ Core ใน HasSecurity::enablePdfA() ปฏิเสธชุดค่าที่ไม่รองรับก่อนที่จะมีการเขียนไบต์ใด ๆ ดูแบบจำลองภัยคุกคามของโปรเจกต์สำหรับรายละเอียดของไปป์ไลน์การเก็บถาวร
ความสอดคล้อง
หัวข้อที่มีชื่อว่า “ความสอดคล้อง”หน้านี้เป็น การจับคู่ ฟีเจอร์ ไม่ใช่การกล่าวอ้างความสอดคล้อง
| ส่วนของ 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 | รุ่น Enterprise ของ PdfAManager (nextpdf/pro) | Premium เท่านั้น (ไม่ใช่ Core) |
| สคีมาส่วนขยาย XMP การทำ font subsetting ข้อห้ามการเข้ารหัสลับ | §6 / ภาคผนวก A/B | รุ่น Enterprise ของ PdfAManager (nextpdf/pro) | Premium เท่านั้น (ไม่ใช่ Core) |
| การพิจารณาความสอดคล้อง | ข้อกำหนด 5 | NextPDF ไม่ได้ดำเนินการ — veraPDF | ไม่ครอบคลุมอย่างชัดเจน |
การรองรับไม่ใช่ความสอดคล้อง — และหน้านี้แยกทั้งสองสิ่งออกจากกันโดยเจตนา (a) NextPDF Core ส่งออก โครงสร้างที่ ISO 19005-4:2020 §6.7.3 กำหนดไว้สำหรับการระบุรูปแบบ ซึ่งเป็นการนำไปปฏิบัติจริง โดยมีหลักฐานจาก tests/Unit/Conformance/ConformanceModePdfAVariantTest.php (ผ่าน) (b) การที่ ไฟล์ สอดคล้องกับ PDF/A-4 เป็นการยืนยันอีกขั้นหนึ่ง ซึ่งมีเพียงตัวตรวจสอบความถูกต้องเท่านั้นที่ทำได้ ตาม ISO 19005-4:2020 ข้อกำหนด 5 ข้อกำหนด 5 ระบุว่าเครื่องมือตรวจสอบเป็นผู้ดำเนินการพิจารณาความสอดคล้องจริงเทียบกับข้อกำหนดเชิงบรรทัดฐาน NextPDF กล่าวอ้าง (a) NextPDF ไม่กล่าวอ้าง (b) ตรวจสอบความถูกต้องด้วย veraPDF (verapdf --flavour 4 … หรือ php oracle/run.php สำหรับ oracle harness — ซึ่งทำงานเฉพาะเมื่อมีไบนารี veraPDF อยู่เท่านั้น เป็นเกตแบบ opt-in)
วลี “PDF/A-4 compliant”, “fully conformant” และ “PDF/A-4 certified” ถูกละเว้นจากหน้านี้โดยเจตนา NextPDF ส่งออกโครงสร้างที่เกี่ยวข้องกับ PDF/A-4 ได้ แต่ไม่รับประกันว่าจะได้ไฟล์ที่สอดคล้องตามข้อกำหนด
การอ้างอิงเรียบเรียงใหม่จากคลังเอกสารความสอดคล้องของ NextPDF ไดเจสต์ reference_id แบบเต็ม 64 อักขระบันทึกไว้ในส่วนหัว (front matter) ของหน้าและในไฟล์ docs/public/modules/core/_normative-evidence-conf.md ด้วย
ดูเพิ่มเติม
หัวข้อที่มีชื่อว่า “ดูเพิ่มเติม”- โมดูล Conformance — การกำหนดเส้นทางของ
ConformanceModeและ oracle ของ veraPDF - โมดูล Compliance — ตัวตรวจสอบความถูกต้อง PDF/R-1 และไวยากรณ์ Arlington
- การจับคู่ข้อกำหนด PDF/UA-2 — โปรไฟล์การเข้าถึงที่เข้าคู่กัน