ISO 19005-4 (PDF/A-4): pemetaan fitur di NextPDF
Sekilas
Bagian berjudul “Sekilas”International Organization for Standardization (ISO) 19005-4:2020 adalah profil pengarsipan Portable Document Format (PDF) 2.0 yang dikenal sebagai PDF/A-4. Halaman ini memetakan profil tersebut terhadap NextPDF tanpa melebih-lebihkan dukungan: apa yang dihasilkan Core, apa yang ditambahkan oleh ekstensi nextpdf/pro, dan apa yang secara eksplisit tidak dicakup oleh NextPDF. NextPDF menghasilkan struktur yang relevan dengan PDF/A-4; hanya validator yang dapat menegaskan bahwa sebuah berkas memang sesuai.
Instalasi
Bagian berjudul “Instalasi”composer require nextpdf/core:^3# PDF/A-4 file authoring (OutputIntent + ICC + XMP) requires:# composer require nextpdf/proTinjauan konseptual
Bagian berjudul “Tinjauan konseptual”ISO 19005-4:2020 dibangun di atas ISO 32000-2:2020 (PDF 2.0), sedangkan PDF/A-2 dan PDF/A-3 dibangun di atas ISO 32000-1:2008 (PDF 1.7). NextPDF merekam perbedaan garis keturunan ini dalam ConformanceMode::requiresPdf17(). Metode ini mengembalikan false untuk semua kasus PDF/A-4 dan true untuk PDF/A-2 dan PDF/A-3.
PDF/A-4 mendefinisikan tiga bentuk konformitas. Profil dasar tidak menggunakan huruf pdfa:conformance. PDF/A-4e (Lampiran B, konten teknik / 3D) menetapkan pdfa:conformance = E. PDF/A-4f (Lampiran A, berkas tersemat) menetapkan pdfa:conformance = F. ISO 19005-4:2020 §6.7.3 menetapkan skema identifikasi PDF/A dalam namespace Association for Intelligent Information Management (AIIM). Skema tersebut menyatakan bahwa berkas yang tidak sesuai dengan PDF/A-4e maupun PDF/A-4f tidak menyediakan entri pdfa:conformance. NextPDF mencerminkan perilaku ini secara tepat dalam ConformanceMode::pdfaConformanceLetter(): PdfA4 mengembalikan string kosong, PdfA4e mengembalikan E, PdfA4f mengembalikan F.
Batas edisi yang krusial adalah pembuatan berkas PDF/A-4. Kamus OutputIntent, profil International Color Consortium (ICC) tersemat, skema ekstensi Extensible Metadata Platform (XMP), jaminan subset fon, dan larangan enkripsi diimplementasikan dalam PdfAManager Enterprise. PdfAManager Enterprise disertakan dalam ekstensi nextpdf/pro. Pada instalasi yang hanya memakai Core, Document::enablePdfA() memunculkan InvalidConfigException karena kapabilitas security.pdfa tidak terdaftar. Contoh yang dapat dijalankan (examples/32-pdfa4-icc.php) mendemonstrasikan hal ini dengan memeriksa registri kapabilitas dan menangani keterbatasan tersebut lewat pesan yang jelas, bukan stack trace.
Karena itu, di Core saja, permukaan PDF/A-4 hanya berupa diskriminator. NextPDF mencatat varian PDF/A-4 mana yang dideklarasikan oleh sebuah dokumen. NextPDF menghasilkan penanda pdfaid:part = 4 / pdfa:conformance yang didefinisikan oleh skema. Memproduksi berkas PDF/A-4 yang lengkap — dan memvalidasi bahwa berkas tersebut sesuai — adalah dua langkah terpisah. Langkah pertama memerlukan nextpdf/pro. Langkah kedua memerlukan veraPDF.
Permukaan API
Bagian berjudul “Permukaan API”| Permukaan | Edisi | Apa yang disediakan |
|---|---|---|
ConformanceMode::PdfA4 / PdfA4e / PdfA4f | core | Diskriminator varian |
ConformanceMode::pdfaPart() → 4 | core | Nomor bagian ISO 19005 |
ConformanceMode::pdfaConformanceLetter() → '' / 'E' / 'F' | core | Huruf konformitas §6.7.3 |
ConformanceMode::requiresPdf17() → false | core | Pemeriksaan garis keturunan PDF 2.0 |
Document::enablePdfA() | pro | Pembuatan OutputIntent + ICC + XMP; melempar InvalidConfigException di Core |
Contoh kode — Mulai cepat
Bagian berjudul “Contoh kode — Mulai cepat”<?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)Contoh kode — Produksi
Bagian berjudul “Contoh kode — Produksi”<?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.pdfKasus tepi & jebakan
Bagian berjudul “Kasus tepi & jebakan”- Core tidak dapat membuat berkas PDF/A-4.
enablePdfA()melempar pengecualian di Core. Core hanya mengekspos diskriminator dan penanda XMP. - PDF/A-4 dasar tidak memancarkan
pdfa:conformance. Menurut ISO 19005-4:2020 §6.7.3, hanya PDF/A-4e dan PDF/A-4f yang menetapkan huruf tersebut.ConformanceMode::PdfA4mengembalikan string kosong secara sengaja. - Garis keturunan PDF 2.0, bukan PDF 1.7. Kesalahan umum adalah menggunakan kembali pipeline PDF/A-3 yang mengharapkan
%PDF-1.7. PDF/A-4 adalah PDF 2.0;requiresPdf17()mengembalikanfalseuntuk semua kasus PDF/A-4. - Validasi ICC bersifat Premium. Validasi ICC pada OutputIntent ISO 19005-4:2020 §6.2.2 (magic
acsp, tabel tag, titik putih D50) ditangani olehPdfAManagerEnterprise, bukan Core. - Pustaka ini tidak menyertifikasi berkas. Menetapkan
PdfA4fdan menghasilkan penanda tidak menjadikan keluaran sebagai berkas PDF/A-4f yang valid. Validasi dengan veraPDF.
Kinerja
Bagian berjudul “Kinerja”Permukaan PDF/A-4 Core adalah introspeksi tipe-nilai murni: dispatch enum match, O(1), dan tanpa alokasi. Jalur pembuatan Premium menambahkan OutputIntent dan paket ICC selama penulisan. Biayanya berupa ukuran profil tersemat, yang ditangani di dalam anggaran penulisan. Validasi veraPDF berjalan secara terpisah, bukan selama pembuatan.
Catatan keamanan
Bagian berjudul “Catatan keamanan”PDF/A-4 melarang enkripsi. PdfAManager Enterprise menegakkan invarian larangan enkripsi dan mengurutkan penerapannya relatif terhadap enablePdfA() sehingga pemanggil tidak dapat secara tidak sengaja menggabungkan Advanced Encryption Standard in Galois/Counter Mode (AES-GCM) dengan mode pengarsipan. Proteksi awal Core di HasSecurity::enablePdfA() menolak kombinasi yang tidak didukung sebelum byte apa pun ditulis. Lihat model ancaman proyek untuk detail pipeline pengarsipan.
Konformitas
Bagian berjudul “Konformitas”Halaman ini adalah pemetaan fitur, bukan klaim konformitas.
| Area ISO 19005-4:2020 | Klausa | Cakupan NextPDF | Status |
|---|---|---|---|
| Skema identifikasi varian | §6.7.3 | ConformanceMode menghasilkan pdfaid:part = 4 dan huruf pdfa:conformance | Diklaim (Core; diuji unit dalam tests/Unit/Conformance/) |
| Gerbang garis keturunan PDF 2.0 | §6.7.3 / dasar | requiresPdf17() mengembalikan false untuk semua kasus PDF/A-4 | Terverifikasi (diuji unit) |
| OutputIntent + ICC tersemat | §6.2.2 | PdfAManager Enterprise (nextpdf/pro) | Khusus Premium (bukan Core) |
| Skema ekstensi XMP, subset fon, larangan enkripsi | §6 / Lampiran A/B | PdfAManager Enterprise (nextpdf/pro) | Khusus Premium (bukan Core) |
| Penentuan konformitas | Klausa 5 | Tidak dilakukan oleh NextPDF — veraPDF | Non-cakupan eksplisit |
Dukungan bukanlah konformitas — dan halaman ini sengaja memisahkan keduanya. (a) NextPDF Core menghasilkan struktur yang didefinisikan ISO 19005-4:2020 §6.7.3 untuk identifikasi varian; ini adalah implementasi, yang dibuktikan oleh tests/Unit/Conformance/ConformanceModePdfAVariantTest.php (lulus). (b) Sebuah berkas yang sesuai dengan PDF/A-4 adalah penegasan terpisah yang hanya dapat dilakukan oleh validator, menurut ISO 19005-4:2020 Klausa 5. Klausa 5 menyatakan bahwa alat pemeriksa melakukan penentuan konformitas yang sebenarnya terhadap persyaratan normatif. NextPDF membuat klaim (a). NextPDF tidak membuat klaim (b). Validasi dengan veraPDF (verapdf --flavour 4 …, atau php oracle/run.php untuk harness oracle — yang hanya berjalan ketika biner veraPDF tersedia sebagai gerbang opsional).
Frasa “PDF/A-4 compliant”, “fully conformant”, dan “PDF/A-4 certified” sengaja tidak digunakan di halaman ini. NextPDF menghasilkan struktur yang relevan dengan PDF/A-4; NextPDF tidak menjamin berkas yang sesuai.
Kutipan diparafrasakan dari korpus kepatuhan NextPDF. Digest reference_id lengkap sepanjang 64 karakter dicatat dalam front matter halaman dan dalam docs/public/modules/core/_normative-evidence-conf.md.
Lihat juga
Bagian berjudul “Lihat juga”- Modul Conformance — perutean
ConformanceModedan oracle veraPDF - Modul Compliance — validator PDF/R-1 dan tata bahasa Arlington
- Pemetaan spesifikasi PDF/UA-2 — padanan profil aksesibilitasnya