Bỏ qua để đến nội dung

ISO 19005-4 (PDF/A-4): ánh xạ tính năng NextPDF

International Organization for Standardization (ISO) 19005-4:2020 là hồ sơ lưu trữ cho Portable Document Format (PDF) 2.0, được gọi là PDF/A-4. Trang này ánh xạ hồ sơ đó sang NextPDF mà không phóng đại mức hỗ trợ: những gì Core phát ra, những gì tiện ích mở rộng nextpdf/pro bổ sung, và những gì NextPDF nêu rõ là không hỗ trợ. NextPDF phát ra các cấu trúc liên quan đến PDF/A-4; chỉ trình kiểm định mới có thể khẳng định một tệp có tuân thủ hay không.

Terminal window
composer require nextpdf/core:^3
# PDF/A-4 file authoring (OutputIntent + ICC + XMP) requires:
# composer require nextpdf/pro

ISO 19005-4:2020 được xây dựng trên ISO 32000-2:2020 (PDF 2.0), trong khi PDF/A-2 và PDF/A-3 được xây dựng trên ISO 32000-1:2008 (PDF 1.7). NextPDF ghi nhận khác biệt về nguồn gốc này trong ConformanceMode::requiresPdf17(). Phương thức này trả về false cho mọi trường hợp PDF/A-4 và true cho PDF/A-2 cũng như PDF/A-3.

PDF/A-4 định nghĩa ba dạng tuân thủ. Hồ sơ cơ sở không dùng chữ pdfa:conformance. PDF/A-4e (Phụ lục B, nội dung kỹ thuật / 3D) đặt pdfa:conformance = E. PDF/A-4f (Phụ lục A, tệp nhúng) đặt pdfa:conformance = F. ISO 19005-4:2020 §6.7.3 quy định lược đồ định danh PDF/A trong không gian tên của Association for Intelligent Information Management (AIIM). Tài liệu này nêu rằng một tệp không tuân thủ PDF/A-4e hoặc PDF/A-4f thì không cung cấp mục pdfa:conformance nào. NextPDF phản ánh chính xác hành vi này trong ConformanceMode::pdfaConformanceLetter(): PdfA4 trả về chuỗi rỗng, PdfA4e trả về E, PdfA4f trả về F.

Ranh giới phiên bản then chốt nằm ở việc tạo lập tệp PDF/A-4. Từ điển OutputIntent, hồ sơ International Color Consortium (ICC) được nhúng, lược đồ mở rộng Extensible Metadata Platform (XMP), các bảo đảm về tập con phông chữ và lệnh cấm mã hóa đều được triển khai trong PdfAManager bản Enterprise. PdfAManager bản Enterprise đi kèm tiện ích mở rộng nextpdf/pro. Trong bản cài đặt chỉ có Core, Document::enablePdfA() ném ra InvalidConfigException vì khả năng security.pdfa chưa được đăng ký. Ví dụ có thể chạy (examples/32-pdfa4-icc.php) minh họa điều này bằng cách kiểm tra sổ đăng ký khả năng và giảm cấp nhẹ nhàng bằng thông báo rõ ràng thay vì dấu vết ngăn xếp.

Vì vậy, với Core đơn thuần, bề mặt PDF/A-4 chỉ là bộ phân biệt. NextPDF ghi lại biến thể PDF/A-4 mà tài liệu khai báo. NextPDF phát ra các dấu hiệu pdfaid:part = 4 / pdfa:conformance do lược đồ định nghĩa. Việc tạo ra một tệp PDF/A-4 hoàn chỉnh — và kiểm định rằng tệp đó tuân thủ — là hai bước riêng biệt. Bước đầu tiên cần nextpdf/pro. Bước thứ hai cần veraPDF.

Bề mặtPhiên bảnCung cấp những gì
ConformanceMode::PdfA4 / PdfA4e / PdfA4fcoreBộ phân biệt biến thể
ConformanceMode::pdfaPart()4coreSố phần của ISO 19005
ConformanceMode::pdfaConformanceLetter()'' / 'E' / 'F'coreChữ tuân thủ §6.7.3
ConformanceMode::requiresPdf17()falsecoreCổng kiểm soát nguồn gốc PDF 2.0
Document::enablePdfA()proTạo lập OutputIntent + ICC + XMP; ném ra InvalidConfigException trong 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

Trường hợp đặc biệt & điểm cần lưu ý

Phần tiêu đề “Trường hợp đặc biệt & điểm cần lưu ý”
  • Core không thể tạo lập tệp PDF/A-4. enablePdfA() ném lỗi trong Core. Core chỉ phơi bày bộ phân biệt và các dấu hiệu XMP.
  • PDF/A-4 cơ sở không phát ra pdfa:conformance nào. Theo ISO 19005-4:2020 §6.7.3, chỉ PDF/A-4e và PDF/A-4f mới đặt chữ này. ConformanceMode::PdfA4 trả về chuỗi rỗng theo thiết kế.
  • Nguồn gốc PDF 2.0, không phải PDF 1.7. Một lỗi thường gặp là tái sử dụng đường ống PDF/A-3 vốn mong đợi %PDF-1.7. PDF/A-4 là PDF 2.0; requiresPdf17() trả về false cho mọi trường hợp PDF/A-4.
  • Kiểm định ICC thuộc Premium. Theo ISO 19005-4:2020 §6.2.2, việc kiểm định ICC của OutputIntent (mã nhận diện acsp, bảng thẻ, điểm trắng D50) do PdfAManager bản Enterprise xử lý, không phải Core.
  • Thư viện không chứng nhận tệp. Việc đặt PdfA4f và phát ra các dấu hiệu không khiến đầu ra trở thành một tệp PDF/A-4f hợp lệ. Hãy kiểm định bằng veraPDF.

Bề mặt PDF/A-4 của Core là cơ chế nội quan thuần kiểu giá trị: điều phối enum match, O(1), và không cấp phát bộ nhớ. Đường tạo lập của Premium bổ sung OutputIntent và gói ICC trong lúc ghi. Chi phí của nó là kích thước hồ sơ được nhúng, được xử lý trong ngân sách của bộ ghi. Việc kiểm định veraPDF chạy ngoài luồng, không chạy trong lúc tạo.

PDF/A-4 cấm mã hóa. PdfAManager bản Enterprise thực thi bất biến cấm mã hóa và sắp xếp bất biến đó tương đối với enablePdfA() để người gọi không thể vô tình kết hợp Advanced Encryption Standard in Galois/Counter Mode (AES-GCM) với chế độ lưu trữ. Lớp bảo vệ phía trước của Core trong HasSecurity::enablePdfA() từ chối tổ hợp không được hỗ trợ trước khi bất kỳ byte nào được ghi. Xem mô hình mối đe dọa của dự án để biết chi tiết về đường ống lưu trữ.

Trang này là một bản ánh xạ tính năng, không phải một tuyên bố tuân thủ.

Lĩnh vực ISO 19005-4:2020Điều khoảnMức độ hỗ trợ của NextPDFTrạng thái
Lược đồ định danh biến thể§6.7.3ConformanceMode phát ra pdfaid:part = 4 và chữ pdfa:conformance tương ứngĐược tuyên bố (Core; có kiểm thử đơn vị trong tests/Unit/Conformance/)
Cổng kiểm soát nguồn gốc PDF 2.0§6.7.3 / cơ sởrequiresPdf17() trả về false cho mọi trường hợp PDF/A-4Đã xác minh (có kiểm thử đơn vị)
OutputIntent + ICC được nhúng§6.2.2Bản Enterprise PdfAManager (nextpdf/pro)Chỉ Premium (không phải Core)
Lược đồ mở rộng XMP, lập tập con phông chữ, cấm mã hóa§6 / Phụ lục A/BBản Enterprise PdfAManager (nextpdf/pro)Chỉ Premium (không phải Core)
Việc xác định tuân thủĐiều khoản 5Không do NextPDF thực hiện — veraPDFNói rõ không hỗ trợ

Hỗ trợ không đồng nghĩa với tuân thủ — và trang này cố tình tách biệt hai điều đó. (a) NextPDF Core phát ra các cấu trúc mà ISO 19005-4:2020 §6.7.3 định nghĩa cho việc định danh biến thể; đây là phần triển khai, được chứng minh bằng tests/Unit/Conformance/ConformanceModePdfAVariantTest.php (đang vượt qua). (b) Việc một tệp tuân thủ PDF/A-4 là một khẳng định riêng biệt mà theo ISO 19005-4:2020 Điều khoản 5, chỉ trình kiểm định mới có thể đưa ra. Điều khoản 5 nêu rằng công cụ kiểm tra thực hiện việc xác định thực tế mức độ tuân thủ so với các yêu cầu quy chuẩn. NextPDF đưa ra tuyên bố (a). NextPDF không đưa ra tuyên bố (b). Hãy kiểm định bằng veraPDF (verapdf --flavour 4 …, hoặc php oracle/run.php cho bộ máy oracle — chỉ chạy khi có sẵn tệp nhị phân veraPDF, một cổng kiểm soát tùy chọn).

Các cụm từ “PDF/A-4 compliant”, “fully conformant”, và “PDF/A-4 certified” được cố ý không dùng trên trang này. NextPDF phát ra các cấu trúc liên quan đến PDF/A-4; NextPDF không bảo đảm một tệp tuân thủ.

Các trích dẫn được diễn giải lại từ kho tài liệu tuân thủ của NextPDF. Các bản tóm tắt reference_id đầy đủ 64 ký tự được ghi trong phần đầu trang và trong docs/public/modules/core/_normative-evidence-conf.md.