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

ความสอดคล้องของ PDF/A-4: สิ่งที่ NextPDF สร้างสำหรับ ISO 19005-4

ข้อความกำหนดขอบเขต NextPDF สร้างเอาต์พุตที่มุ่งให้สอดคล้องกับ PDF/A-4 โดยไลบรารีไม่ได้ยืนยันความสอดคล้องด้วยตนเอง ตัวตรวจสอบ เช่น veraPDF เป็นผู้ยืนยัน

PDF/A-4 คือ ISO 19005-4:2020 ซึ่งเป็นโปรไฟล์สำหรับการเก็บถาวรที่อิงกับ PDF 2.0 NextPDF Core มีตัวจำแนก ConformanceMode (PdfA4, PdfA4e, PdfA4f) เอนจิน Premium nextpdf/pro สร้าง OutputIntent โปรไฟล์ ICC ที่ฝังไว้ และสกีมาสำหรับระบุ pdfaid ของ Extensible Metadata Platform (XMP) ระหว่างการเรียก save() ไลบรารีสร้างอาร์ติแฟกต์ ส่วน veraPDF เป็นผู้ตัดสินความสอดคล้อง ISO 19005-4 §6.7.3 ระบุไว้อย่างชัดเจนว่าคุณสมบัติ pdfaid:part/pdfaid:rev “ไม่ได้กำหนดความสอดคล้องด้วยตัวเอง”

Terminal window
composer require nextpdf/core:^3
composer require nextpdf/pro # OutputIntent + ICC + XMP authoring

Core ลงทะเบียนความสามารถ security.pdfa แต่จะรายงานว่าความสามารถนี้ไม่พร้อมใช้งานหากไม่มี nextpdf/pro ในกรณีนั้น enablePdfA() จะโยน InvalidConfigException พร้อมแนวทางการอัปเกรด แทนที่จะสร้างไฟล์ที่ไม่สอดคล้อง

Document::enablePdfA(?object $version = null) แมปอินพุตของ enum PdfAVersion ไปยังเคส ConformanceMode ค่าเริ่มต้นจะเป็น ConformanceMode::PdfA4 สำหรับอินพุตที่ไม่รู้จัก ('4e' → PdfA4e, '4f' → PdfA4f) โหมดนี้กำหนดภาระการสร้างสามอย่างสำหรับไฟล์ที่สอดคล้อง:

  • OutputIntent + ICC — §6.2.3 อนุญาตให้ไฟล์ที่สอดคล้องระบุคุณลักษณะด้านสีของตนด้วย OutputIntent ของ PDF/A-4 ที่อ้างอิงสตรีม ICC ของ International Color Consortium (ICC) แบบ DestOutputProfile ตาม §6.2.4.1 นี่เป็นหนึ่งในสองเส้นทางที่อนุญาตสำหรับสีที่ไม่ขึ้นกับอุปกรณ์ (อีกเส้นทางหนึ่งคือการระบุพื้นที่สีที่ไม่ขึ้นกับอุปกรณ์โดยตรง) OutputIntent เป็นเส้นทางที่ NextPDF เลือกใช้ ไม่ใช่ข้อกำหนดแบบไม่มีเงื่อนไขของมาตรฐาน
  • การระบุด้วย pdfaid — §6.7.3 กำหนดให้มีสกีมาสำหรับระบุ PDF/A ใน XMP ระดับเอกสาร (เนมสเปซ pdfaid ของ AIIM) พร้อม pdfaid:part/pdfaid:rev PDF/A-4e และ PDF/A-4f ยังตั้งค่า pdfa:conformance (E / F) ด้วย §6.7.3 ระบุว่าไฟล์ที่ไม่สอดคล้องกับทั้งสองโหมดจะต้องไม่ระบุค่า pdfa:conformance
  • การฝังฟอนต์ — §6.2.10 กำหนดให้ฝังฟอนต์ทั้งหมดที่ใช้ในการเรนเดอร์

NextPDF สร้างอาร์ติแฟกต์เหล่านี้ แต่ไม่ได้พิจารณาความสอดคล้องตาม §5 หน้าที่ดังกล่าวเป็นของ veraPDF และ §6.7.3 สงวนการพิจารณานี้ไว้ให้กระบวนการดังกล่าว

เมท็อดผลลัพธ์
enablePdfA(?object $version = null): staticกำหนดเส้นทางไปยัง ConformanceMode::PdfA4/PdfA4e/PdfA4f; กำหนดให้สร้าง OutputIntent + ICC + XMP ที่ save() โยน InvalidConfigException|PageLayoutException|CompressionException เมื่อไม่มี nextpdf/pro
ConformanceMode::pdfaPart(): ?intคืนค่าส่วน ISO 19005 สำหรับโหมดที่ทำงานอยู่ (4 สำหรับ PdfA4*)
ConformanceMode::pdfaConformanceLetter(): stringคืนค่าตัวอักษร pdfa:conformance (E / F) หรือค่าว่าง
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
use NextPDF\Exception\InvalidConfigException;
use NextPDF\Support\CapabilityRegistry;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/archival.pdf';
$registry = CapabilityRegistry::getInstance();
if (!$registry->get('security.pdfa')->isAvailable()) {
fwrite(STDERR, "PDF/A-4 requires nextpdf/pro.\n");
exit(1);
}
try {
$doc = Document::createStandalone();
$doc->enablePdfA(); // ConformanceMode::PdfA4
$doc->setTitle('Archival Record 2026-0042');
$doc->setLanguage('en');
$doc->writeHtml('<h1>Archival record</h1><p>Body.</p>');
$doc->save($out); // OutputIntent + ICC + XMP scheduled here
} catch (InvalidConfigException $e) {
fwrite(STDERR, $e->getMessage() . "\n");
exit(1);
}
echo "Wrote {$out} — validate: verapdf --flavour 4 {$out}\n";

ใช้คำตัดสินของตัวตรวจสอบเป็นเกตของบิลด์ รัน verapdf --flavour 4 กับเอาต์พุต และทำให้บิลด์ล้มเหลวเมื่อ exit ไม่เป็นศูนย์ คำตัดสินของตัวตรวจสอบคือเกต ส่วนสิ่งที่ไลบรารีสร้างคืออินพุตสำหรับเกตนั้น ไม่ใช่ตัวคำตัดสินเอง ดู /cookbook/php/pdfa4-conformance-gate/ สำหรับไปป์ไลน์เกตแบบเต็มรูปแบบ

  • เปิดใช้งานก่อนเพิ่มเนื้อหา เรียก enablePdfA() ก่อนเพิ่มเนื้อหา การเปิดใช้งานย้อนหลังจะไม่ประมวลผลอ็อบเจกต์ที่เขียนไปแล้วซ้ำ
  • ห้ามเข้ารหัสลับ PDF/A ห้ามใช้คีย์ Encrypt อย่าเรียก setEncryption() กับเอกสาร PDF/A การเข้ารหัสลับเป็นเรื่องของการรักษาความลับ ไม่ใช่ความสมบูรณ์สำหรับการเก็บถาวร และในที่นี้ทั้งสองเรื่องแยกจากกันโดยเด็ดขาด
  • pdfa:conformance เป็นแบบมีเงื่อนไข เฉพาะ PDF/A-4e และ PDF/A-4f เท่านั้นที่ตั้งค่านี้ การระบุค่านี้บนไฟล์ PDF/A-4 ธรรมดาถือเป็นการละเมิดความสอดคล้องในตัวเอง (§6.7.3) โดยเคส ConformanceMode ป้องกันสิ่งนั้นโดยการออกแบบ
  • ไฟล์แนบของ PDF/A-4f ไฟล์ที่ฝังในไฟล์ PDF/A-4f ต้องมีคีย์ F และ UF (แนะนำให้มี Desc) ตาม §6.7.5 ข้อกำหนดนี้รองรับเส้นทางไฮบริด ZUGFeRD/Factur-X

การฝัง OutputIntent + ICC จะเพิ่มสตรีม ICC ขนาดคงที่ (โปรไฟล์พื้นที่สีทำงาน) และแพ็กเก็ต XMP ระหว่าง save() งบประมาณประสิทธิภาพคือ wall ≤ 1500 ms และพีค ≤ 128 MB สำหรับเอกสารทั่วไป

PDF/A-4 ห้ามการเข้ารหัสลับ โปรไฟล์นี้เป็นข้อจำกัดด้านการเก็บถาวรและความคงทน ไม่ใช่กลไกควบคุมด้านความปลอดภัย การดูแลรักษาคีย์และนโยบายของผู้ตรวจสอบอยู่นอกขอบเขตของโปรไฟล์นี้ ดูรายละเอียดได้ที่ ศูนย์ความเชื่อถือ

การสร้าง PDF/A-4 ทำงานภายในกระบวนการ และเขียนเฉพาะเอกสาร โปรไฟล์ ICC ที่ฝังไว้ และแพ็กเก็ต XMP เท่านั้น ไม่มีเนื้อหาใดออกนอกกระบวนการ ข้อมูลที่ระบุตัวบุคคลได้ (PII) ในเนื้อหาต้นทางเป็นความรับผิดชอบของผู้ผสานระบบ โปรไฟล์นี้ไม่ได้ปกปิดข้อมูล

การวัดและส่งข้อมูลอย่างปลอดภัยและการล้างล็อก

หัวข้อที่มีชื่อว่า “การวัดและส่งข้อมูลอย่างปลอดภัยและการล้างล็อก”

ตัวอย่างนี้เขียนเฉพาะพาธของเอาต์พุตและคำสั่งของตัวตรวจสอบไปยัง STDERR เท่านั้น โดยไม่บันทึกไบต์ของเอกสารใดๆ สูตรนี้เคารพ NEXTPDF_COOKBOOK_OUTPUT และไม่เคยส่งออก PDF ไปยัง STDOUT

ไฟล์ PDF/A-4 ไม่มีการควบคุมการเข้าถึง ผู้ที่มีไฟล์สามารถอ่านได้ โปรไฟล์นี้รองรับความคงทนในการเรนเดอร์ ไม่ใช่การรักษาความลับ ให้ถือว่าสตรีม ICC ของ OutputIntent เป็นข้อมูลสาธารณะ

การสร้าง PDF/A-4 ไม่ดำเนินการเข้ารหัสลับใดๆ ลายเซ็นดิจิทัลบนไฟล์ PDF/A-4 (PDF/A-4 §6.5 อนุญาตโปรไฟล์ PAdES) เป็นเรื่องของสูตรการลงนามแยกต่างหาก และสืบทอดสถานะ FIPS ของสูตรนั้น หน้านี้ไม่ได้กล่าวอ้างเรื่องการลงนามใดๆ

ข้อกล่าวอ้างมาตรฐานข้อรหัสอ้างอิง (reference_id)
ไฟล์ PDF/A-4 อาจ ระบุคุณลักษณะด้านสีของไฟล์ด้วย OutputIntent ของ PDF/A ที่อ้างอิงโปรไฟล์ ICC แบบ DestOutputProfileISO 19005-4§6.2.3
สีที่ไม่ขึ้นกับอุปกรณ์อาจระบุได้โดยตรงหรือโดยอ้อมผ่าน DestOutputProfile ของ OutputIntent (หนึ่งในสองเส้นทางที่อนุญาต)ISO 19005-4§6.2.4.1
เวอร์ชัน PDF/A ถูกระบุผ่านสกีมาการระบุ PDF/A (pdfaid) ใน XMP ของเอกสารISO 19005-4§6.7.3
pdfaid:part / pdfaid:rev ไม่ได้กำหนดความสอดคล้องด้วยตัวเอง การพิจารณาดำเนินการตาม Clause 5ISO 19005-4§6.7.3
ไฟล์ที่ไม่สอดคล้องกับทั้ง PDF/A-4e และ PDF/A-4f จะต้องไม่ระบุค่า pdfa:conformanceISO 19005-4§6.7.3
ไฟล์ที่ฝังของ PDF/A-4f ต้องมีคีย์ F และ UF (แนะนำให้มี Desc)ISO 19005-4§6.7.5
ฟอนต์ทั้งหมดที่ใช้ในการเรนเดอร์ต้องถูกฝังISO 19005-4§6.2.10
การใช้ความโปร่งใส / สี ขึ้นอยู่กับ OutputIntent ที่ประกาศไว้ISO 19005-4§6.2.9

การอ้างอิงใช้ clause-id ร่วมกับตัวชี้ reference_id ที่ชี้เข้าไปยังคอร์ปัสการตรวจสอบ ไม่มีการนำข้อความของมาตรฐานมาแสดงซ้ำ NextPDF สรุปข้อต่างๆ ด้วยถ้อยคำของตนเอง