Tuân thủ PDF/A-4: NextPDF phát ra gì theo ISO 19005-4
Tổng quan nhanh
Phần tiêu đề “Tổng quan nhanh”Tuyên bố về ranh giới. NextPDF tạo đầu ra hướng tới tuân thủ PDF/A-4. Thư viện không tự khẳng định tuân thủ; việc đó thuộc về trình kiểm định, chẳng hạn như veraPDF.
PDF/A-4 là ISO 19005-4:2020, hồ sơ lưu trữ dựa trên PDF 2.0. NextPDF Core cung cấp bộ phân biệt ConformanceMode (PdfA4, PdfA4e, PdfA4f). Engine Premium nextpdf/pro phát ra OutputIntent, hồ sơ ICC nhúng và lược đồ định danh pdfaid của Extensible Metadata Platform (XMP) khi save(). Thư viện tạo các artifact; veraPDF quyết định việc tuân thủ. ISO 19005-4 §6.7.3 nêu rõ: các thuộc tính pdfaid:part/pdfaid:rev “tự thân không quyết định sự tuân thủ”.
Cài đặt
Phần tiêu đề “Cài đặt”composer require nextpdf/core:^3composer require nextpdf/pro # OutputIntent + ICC + XMP authoringCore đăng ký năng lực security.pdfa, nhưng báo cáo là không khả dụng nếu không có nextpdf/pro. Trong trường hợp đó, enablePdfA() ném InvalidConfigException kèm theo lộ trình nâng cấp, thay vì phát ra một tệp không tuân thủ.
Tổng quan khái niệm
Phần tiêu đề “Tổng quan khái niệm”Document::enablePdfA(?object $version = null) ánh xạ đầu vào enum PdfAVersion sang một case của ConformanceMode. Mặc định là ConformanceMode::PdfA4 đối với đầu vào không được nhận diện ('4e' → PdfA4e, '4f' → PdfA4f). Chế độ này chi phối ba nghĩa vụ phải phát ra cho một tệp tuân thủ:
- OutputIntent + ICC — §6.2.3 cho phép một tệp tuân thủ chỉ định các đặc tính màu của nó bằng một OutputIntent PDF/A-4 tham chiếu đến một luồng ICC (International Color Consortium)
DestOutputProfile. Theo §6.2.4.1, đây là một trong hai cách được phép để có màu độc lập với thiết bị (cách còn lại là chỉ định trực tiếp các không gian màu độc lập với thiết bị). OutputIntent là cách NextPDF chọn, không phải yêu cầu vô điều kiện của tiêu chuẩn. - Định danh
pdfaid— §6.7.3 yêu cầu lược đồ định danh PDF/A trong XMP cấp tài liệu (không gian tênpdfaidcủa AIIM) vớipdfaid:part/pdfaid:rev. PDF/A-4e và PDF/A-4f cũng đặtpdfa:conformance(E / F). §6.7.3 nêu rằng một tệp không tuân thủ bất kỳ chế độ nào trong hai chế độ đó thì không được cung cấp giá trịpdfa:conformance. - Nhúng phông chữ — §6.2.10 yêu cầu tất cả phông chữ dùng để kết xuất phải được nhúng.
NextPDF phát ra các artifact này, nhưng không thực hiện việc xác định tuân thủ theo §5. Đó là vai trò của veraPDF; §6.7.3 dành việc xác định ấy cho quy trình đó.
Bề mặt API
Phần tiêu đề “Bề mặt API”| Phương thức | Tác dụng |
|---|---|
enablePdfA(?object $version = null): static | Định tuyến tới ConformanceMode::PdfA4/PdfA4e/PdfA4f; lên lịch OutputIntent + ICC + XMP tại save(). Ném InvalidConfigException|PageLayoutException|CompressionException if nextpdf/pro vắng mặt. |
ConformanceMode::pdfaPart(): ?int | Trả về phần ISO 19005 cho chế độ đang hoạt động (4 đối với PdfA4*). |
ConformanceMode::pdfaConformanceLetter(): string | Trả về ký tự pdfa:conformance (E / F) hoặc rỗng. |
Mã mẫu — bắt đầu nhanh
Phần tiêu đề “Mã mẫu — bắt đầu nhanh”<?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";Mã mẫu — sản xuất
Phần tiêu đề “Mã mẫu — sản xuất”Dùng kết quả của trình kiểm định làm cổng build. Chạy verapdf --flavour 4 trên đầu ra, và cho build thất bại khi mã thoát khác không. Kết quả của trình kiểm định là cổng; đầu ra của thư viện chỉ là đầu vào cho cổng đó, không bao giờ là chính kết quả đánh giá. Xem /cookbook/php/pdfa4-conformance-gate/ để xem toàn bộ pipeline có cổng kiểm soát.
Trường hợp biên & điểm cần lưu ý
Phần tiêu đề “Trường hợp biên & điểm cần lưu ý”- Bật trước khi thêm nội dung. Gọi
enablePdfA()trước khi bạn thêm nội dung. Nếu bật sau đó, các đối tượng đã ghi sẽ không được xử lý lại. - Không mã hóa. PDF/A cấm khóa
Encrypt. Đừng gọisetEncryption()trên một tài liệu PDF/A. Mã hóa là tính bảo mật, không phải tính toàn vẹn lưu trữ, và ở đây hai điều này loại trừ lẫn nhau. pdfa:conformancelà có điều kiện. Chỉ PDF/A-4e và PDF/A-4f mới đặt nó. Việc phát ra nó trên một tệp PDF/A-4 thuần túy tự nó là một vi phạm tuân thủ (§6.7.3) — caseConformanceModeđược thiết kế để ngăn điều đó.- Tệp đính kèm PDF/A-4f. Các tệp nhúng trong một tệp PDF/A-4f phải mang khóa
FvàUF(khuyến nghị có Desc) theo §6.7.5. Điều này hỗ trợ tuyến lai ZUGFeRD/Factur-X.
Hiệu năng
Phần tiêu đề “Hiệu năng”Việc nhúng OutputIntent + ICC thêm một luồng ICC có kích thước cố định (hồ sơ không gian làm việc) và gói XMP tại save(). Ngân sách là wall ≤ 1.500 ms và peak ≤ 128 MB cho một tài liệu điển hình.
Ghi chú bảo mật
Phần tiêu đề “Ghi chú bảo mật”PDF/A-4 cấm mã hóa. Hồ sơ này là một ràng buộc về lưu trữ và độ bền lâu dài, không phải một biện pháp kiểm soát bảo mật. Việc quản trị khóa và chính sách của trình xác minh nằm ngoài phạm vi của hồ sơ này; xem trung tâm tin cậy.
Lưu trú dữ liệu & giảm thiểu PII
Phần tiêu đề “Lưu trú dữ liệu & giảm thiểu PII”Quá trình phát ra PDF/A-4 chạy trong tiến trình và chỉ ghi tài liệu, hồ sơ ICC nhúng và gói XMP. Không có nội dung nào rời khỏi tiến trình. Thông tin định danh cá nhân (PII) trong nội dung nguồn là trách nhiệm của bên tích hợp. Hồ sơ này không thực hiện biên tập che (redact).
Đo từ xa an toàn & làm sạch nhật ký
Phần tiêu đề “Đo từ xa an toàn & làm sạch nhật ký”Ví dụ này chỉ ghi đường dẫn đầu ra và lệnh trình kiểm định vào STDERR. Nó không ghi bất kỳ byte tài liệu nào. Công thức này tôn trọng NEXTPDF_COOKBOOK_OUTPUT và không bao giờ in PDF ra STDOUT.
Mô hình mối đe dọa
Phần tiêu đề “Mô hình mối đe dọa”Một tệp PDF/A-4 không có kiểm soát truy cập. Bất kỳ ai có tệp đều có thể đọc nó. Hồ sơ này hỗ trợ độ bền kết xuất lâu dài, không phải tính bảo mật. Hãy coi luồng ICC OutputIntent là công khai.
Hành vi ở chế độ FIPS
Phần tiêu đề “Hành vi ở chế độ FIPS”Quá trình phát ra PDF/A-4 không thực hiện bất kỳ mã hóa nào. Chữ ký số trên một tệp PDF/A-4 (PDF/A-4 §6.5 cho phép các hồ sơ PAdES) thuộc phạm vi riêng của công thức chữ ký và kế thừa trạng thái FIPS của công thức đó. Trang này không đưa ra tuyên bố nào về việc ký.
Tuân thủ
Phần tiêu đề “Tuân thủ”| Tuyên bố | Tiêu chuẩn | Điều khoản | reference_id |
|---|---|---|---|
| Một tệp PDF/A-4 có thể chỉ định các đặc tính màu của nó bằng một OutputIntent PDF/A tham chiếu đến một hồ sơ ICC DestOutputProfile. | ISO 19005-4 | §6.2.3 | |
| Màu độc lập với thiết bị có thể được chỉ định trực tiếp hoặc gián tiếp qua OutputIntent DestOutputProfile (một trong hai cách được phép). | ISO 19005-4 | §6.2.4.1 | |
| Phiên bản PDF/A được định danh bằng lược đồ định danh PDF/A (pdfaid) trong XMP tài liệu. | ISO 19005-4 | §6.7.3 | |
| pdfaid:part / pdfaid:rev tự thân không quyết định sự tuân thủ; việc xác định được thực hiện theo Điều 5. | ISO 19005-4 | §6.7.3 | |
| Một tệp không tuân thủ PDF/A-4e cũng như PDF/A-4f thì không được cung cấp giá trị pdfa:conformance. | ISO 19005-4 | §6.7.3 | |
| Các tệp nhúng PDF/A-4f phải có khóa F và UF (khuyến nghị có Desc). | ISO 19005-4 | §6.7.5 | |
| Tất cả phông chữ dùng để kết xuất phải được nhúng. | ISO 19005-4 | §6.2.10 | |
| Việc sử dụng độ trong suốt / màu sắc phụ thuộc vào một OutputIntent đã khai báo. | ISO 19005-4 | §6.2.9 |
Các trích dẫn gồm clause-id cùng với con trỏ reference_id trỏ vào kho ngữ liệu kiểm chứng. Không có văn bản tiêu chuẩn nào được sao chép lại; NextPDF tóm tắt các điều khoản bằng lời lẽ của riêng mình.