Kesesuaian PDF/A-4: apa yang dihasilkan NextPDF untuk ISO 19005-4
Sekilas pandang
Bagian berjudul “Sekilas pandang”Pernyataan batasan. NextPDF menghasilkan keluaran yang dimaksudkan agar sesuai dengan PDF/A-4. Pustaka ini tidak menyatakan kesesuaian; validator seperti veraPDF yang melakukannya.
PDF/A-4 adalah ISO 19005-4:2020, profil pengarsipan berbasis PDF 2.0. NextPDF Core menyediakan diskriminator ConformanceMode (PdfA4, PdfA4e, PdfA4f). Mesin Premium nextpdf/pro menghasilkan OutputIntent, profil ICC tertanam, dan skema identifikasi Extensible Metadata Platform (XMP) pdfaid selama save(). Pustaka ini menghasilkan artefak; veraPDF yang menentukan kesesuaiannya. ISO 19005-4 §6.7.3 menyatakan secara eksplisit bahwa properti pdfaid:part/pdfaid:rev “tidak dengan sendirinya menentukan kesesuaian”.
Pemasangan
Bagian berjudul “Pemasangan”composer require nextpdf/core:^3composer require nextpdf/pro # OutputIntent + ICC + XMP authoringCore mendaftarkan kapabilitas security.pdfa, tetapi melaporkannya tidak tersedia tanpa nextpdf/pro. Dalam kasus tersebut, enablePdfA() melempar InvalidConfigException beserta jalur peningkatan, alih-alih menghasilkan berkas yang tidak sesuai.
Gambaran konseptual
Bagian berjudul “Gambaran konseptual”Document::enablePdfA(?object $version = null) memetakan masukan enum PdfAVersion ke kasus ConformanceMode. Secara default, metode ini memilih ConformanceMode::PdfA4 untuk masukan yang tidak dikenali ('4e' → PdfA4e, '4f' → PdfA4f). Mode tersebut menetapkan tiga kewajiban keluaran untuk berkas yang sesuai:
- OutputIntent + ICC — §6.2.3 mengizinkan berkas yang sesuai untuk menyatakan karakteristik warnanya dengan OutputIntent PDF/A-4 yang merujuk pada aliran ICC (International Color Consortium)
DestOutputProfile. Menurut §6.2.4.1, ini adalah salah satu dari dua rute yang diizinkan untuk warna yang tidak bergantung pada perangkat (rute lainnya adalah menyatakan ruang warna yang tidak bergantung pada perangkat secara langsung). OutputIntent adalah rute yang digunakan NextPDF, bukan persyaratan tanpa syarat dari standar. - Identifikasi
pdfaid— §6.7.3 mewajibkan skema identifikasi PDF/A dalam XMP pada tingkat dokumen (namespacepdfaiddari AIIM) denganpdfaid:part/pdfaid:rev. PDF/A-4e dan PDF/A-4f juga menetapkanpdfa:conformance(E / F). §6.7.3 menyatakan bahwa berkas yang tidak sesuai dengan keduanya tidak boleh menyediakan nilaipdfa:conformance. - Penyematan fon — §6.2.10 mewajibkan semua fon yang digunakan untuk rendering agar disematkan.
NextPDF menghasilkan artefak ini. Pustaka ini tidak menjalankan penentuan kesesuaian §5. Itu adalah tugas veraPDF, dan §6.7.3 mengarahkan penentuan tersebut ke proses itu.
Permukaan API
Bagian berjudul “Permukaan API”| Metode | Efek |
|---|---|
enablePdfA(?object $version = null): static | Merutekan ke ConformanceMode::PdfA4/PdfA4e/PdfA4f; menjadwalkan OutputIntent + ICC + XMP pada save(). Melempar InvalidConfigException|PageLayoutException|CompressionException jika nextpdf/pro tidak ada. |
ConformanceMode::pdfaPart(): ?int | Mengembalikan bagian ISO 19005 untuk mode aktif (4 untuk PdfA4*). |
ConformanceMode::pdfaConformanceLetter(): string | Mengembalikan huruf pdfa:conformance (E / F) atau kosong. |
Contoh kode — Mulai cepat
Bagian berjudul “Contoh kode — Mulai cepat”<?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";Contoh kode — Produksi
Bagian berjudul “Contoh kode — Produksi”Gunakan putusan validator sebagai gerbang build. Jalankan verapdf --flavour 4 pada keluaran, dan gagalkan build jika kode keluar bukan-nol. Putusan validator adalah gerbangnya; artefak yang dihasilkan pustaka adalah masukan untuk itu, bukan putusan itu sendiri. Lihat /cookbook/php/pdfa4-conformance-gate/ untuk alur proses lengkap dengan gerbang.
Kasus tepi & jebakan
Bagian berjudul “Kasus tepi & jebakan”- Aktifkan sebelum konten. Panggil
enablePdfA()sebelum Anda menambahkan konten. Pengaktifan secara retroaktif tidak memproses ulang objek yang sudah ditulis. - Tanpa enkripsi. PDF/A melarang kunci
Encrypt. Jangan panggilsetEncryption()pada dokumen PDF/A. Enkripsi berkaitan dengan kerahasiaan, bukan integritas pengarsipan, dan keduanya saling eksklusif di sini. pdfa:conformancebersifat kondisional. Hanya PDF/A-4e dan PDF/A-4f yang menetapkannya. Menghasilkannya pada berkas PDF/A-4 biasa itu sendiri merupakan pelanggaran kesesuaian (§6.7.3) — kasusConformanceModemencegah hal itu berdasarkan konstruksinya.- Lampiran PDF/A-4f. Berkas yang tertanam dalam berkas PDF/A-4f harus membawa kunci
FdanUF(Desc disarankan) sesuai §6.7.5. Ini mendukung jalur hibrida ZUGFeRD/Factur-X.
Kinerja
Bagian berjudul “Kinerja”Penyematan OutputIntent + ICC menambahkan aliran ICC berukuran tetap (profil ruang kerja) dan paket XMP pada save(). Anggarannya adalah waktu wall-clock ≤ 1500 ms dan memori puncak ≤ 128 MB untuk dokumen umum.
Catatan keamanan
Bagian berjudul “Catatan keamanan”PDF/A-4 melarang enkripsi. Profil ini merupakan batasan untuk pengarsipan dan umur panjang, bukan kendali keamanan. Penyimpanan kunci dan kebijakan verifikator berada di luar lingkup profil ini; lihat pusat kepercayaan.
Residensi Data & Mitigasi PII
Bagian berjudul “Residensi Data & Mitigasi PII”Pembuatan PDF/A-4 berjalan di dalam proses dan hanya menulis dokumen, profil ICC tertanam, dan paket XMP. Tidak ada konten yang meninggalkan proses. Informasi yang dapat diidentifikasi secara pribadi (PII) dalam konten sumber adalah tanggung jawab integrator. Profil ini tidak melakukan redaksi.
Telemetri Aman & Pembersihan Log
Bagian berjudul “Telemetri Aman & Pembersihan Log”Contoh ini hanya menulis jalur keluaran dan perintah validator ke STDERR. Ia tidak mencatat byte dokumen apa pun. Resep ini menghormati NEXTPDF_COOKBOOK_OUTPUT dan tidak pernah mencetak PDF ke STDOUT.
Model ancaman
Bagian berjudul “Model ancaman”Berkas PDF/A-4 tidak memiliki kontrol akses. Siapa pun yang memiliki berkas dapat membacanya. Profil ini mendukung umur panjang rendering, bukan kerahasiaan. Perlakukan aliran ICC OutputIntent sebagai publik.
Perilaku mode FIPS
Bagian berjudul “Perilaku mode FIPS”Pembuatan PDF/A-4 tidak melakukan kriptografi. Tanda tangan digital pada berkas PDF/A-4 (PDF/A-4 §6.5 mengizinkan profil PAdES) dibahas dalam resep tanda tangan terpisah dan mewarisi postur FIPS dari resep tersebut. Halaman ini tidak membuat klaim penandatanganan.
Kesesuaian
Bagian berjudul “Kesesuaian”| Klaim | Spesifikasi | Klausul | reference_id |
|---|---|---|---|
| Berkas PDF/A-4 boleh menyatakan karakteristik warnanya dengan OutputIntent PDF/A yang merujuk pada profil ICC DestOutputProfile. | ISO 19005-4 | §6.2.3 | |
| Warna yang tidak bergantung pada perangkat boleh dinyatakan secara langsung atau tidak langsung melalui DestOutputProfile OutputIntent (salah satu dari dua rute yang diizinkan). | ISO 19005-4 | §6.2.4.1 | |
| Versi PDF/A diidentifikasi melalui skema identifikasi PDF/A (pdfaid) dalam XMP dokumen. | ISO 19005-4 | §6.7.3 | |
| pdfaid:part / pdfaid:rev tidak dengan sendirinya menentukan kesesuaian; penentuan dilakukan sesuai Klausul 5. | ISO 19005-4 | §6.7.3 | |
| Berkas yang tidak sesuai dengan PDF/A-4e maupun PDF/A-4f tidak boleh menyediakan nilai pdfa:conformance. | ISO 19005-4 | §6.7.3 | |
| Berkas yang tertanam dalam PDF/A-4f memerlukan kunci F dan UF (Desc disarankan). | ISO 19005-4 | §6.7.5 | |
| Semua fon yang digunakan untuk rendering harus disematkan. | ISO 19005-4 | §6.2.10 | |
| Penggunaan transparansi / warna bergantung pada OutputIntent yang dinyatakan. | ISO 19005-4 | §6.2.9 |
Sitasi menggunakan id-klausul serta penunjuk reference_id ke korpus verifikasi. Tidak ada teks standar yang direproduksi; NextPDF meringkas klausul dengan kata-katanya sendiri.