Lewati ke konten

ISO 19005-4 (PDF/A-4): pemetaan fitur di NextPDF

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.

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

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.

PermukaanEdisiApa yang disediakan
ConformanceMode::PdfA4 / PdfA4e / PdfA4fcoreDiskriminator varian
ConformanceMode::pdfaPart()4coreNomor bagian ISO 19005
ConformanceMode::pdfaConformanceLetter()'' / 'E' / 'F'coreHuruf konformitas §6.7.3
ConformanceMode::requiresPdf17()falsecorePemeriksaan garis keturunan PDF 2.0
Document::enablePdfA()proPembuatan OutputIntent + ICC + XMP; melempar InvalidConfigException di 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 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::PdfA4 mengembalikan 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() mengembalikan false untuk 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 oleh PdfAManager Enterprise, bukan Core.
  • Pustaka ini tidak menyertifikasi berkas. Menetapkan PdfA4f dan menghasilkan penanda tidak menjadikan keluaran sebagai berkas PDF/A-4f yang valid. Validasi dengan veraPDF.

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.

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.

Halaman ini adalah pemetaan fitur, bukan klaim konformitas.

Area ISO 19005-4:2020KlausaCakupan NextPDFStatus
Skema identifikasi varian§6.7.3ConformanceMode menghasilkan pdfaid:part = 4 dan huruf pdfa:conformanceDiklaim (Core; diuji unit dalam tests/Unit/Conformance/)
Gerbang garis keturunan PDF 2.0§6.7.3 / dasarrequiresPdf17() mengembalikan false untuk semua kasus PDF/A-4Terverifikasi (diuji unit)
OutputIntent + ICC tersemat§6.2.2PdfAManager Enterprise (nextpdf/pro)Khusus Premium (bukan Core)
Skema ekstensi XMP, subset fon, larangan enkripsi§6 / Lampiran A/BPdfAManager Enterprise (nextpdf/pro)Khusus Premium (bukan Core)
Penentuan konformitasKlausa 5Tidak dilakukan oleh NextPDF — veraPDFNon-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.