ข้ามไปยังเนื้อหา

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 ได้ แต่มีเพียงตัวตรวจสอบความถูกต้องเท่านั้นที่ยืนยันได้ว่า ไฟล์ สอดคล้องตามข้อกำหนด

Terminal window
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

ส่วนต่อประสานรุ่นผลิตภัณฑ์สิ่งที่มีให้
ConformanceMode::PdfA4 / PdfA4e / PdfA4fcoreตัวจำแนกรูปแบบ
ConformanceMode::pdfaPart()4coreหมายเลขส่วนของ ISO 19005
ConformanceMode::pdfaConformanceLetter()'' / 'E' / 'F'coreตัวอักษรความสอดคล้องตาม §6.7.3
ConformanceMode::requiresPdf17()falsecoreเกตสายตระกูล 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.0 requiresPdf17() คืนค่า 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.3ConformanceMode ปล่อย 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)
การพิจารณาความสอดคล้องข้อกำหนด 5NextPDF ไม่ได้ดำเนินการ — 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 ด้วย