Hasilkan keluaran PDF/A-4 dan jadikan oracle veraPDF sebagai gerbang
Sekilas pandang
Bagian berjudul “Sekilas pandang”Panduan ini menunjukkan cara membuat keluaran Portable Document Format/Archive (PDF/A-4) dengan PdfAManager Premium, menjalankan veraPDF, lalu menggunakan putusannya sebagai gerbang build. NextPDF menuliskan artefaknya; validatorlah yang menentukan kesesuaiannya. Alurnya mengikuti examples/32-pdfa4-icc.php.
Prasyarat
Bagian berjudul “Prasyarat”- Core terpasang:
composer require nextpdf/core:^3. - Premium terpasang:
composer require nextpdf/pro. PDF/A-4 adalah fitur tingkat Premium (Architecture Decision Record ADR-011). Tanpa Premium,enablePdfA()melemparInvalidConfigExceptionbeserta jalur upgrade-nya. - veraPDF di
PATHuntuk langkah gerbang.
- Periksa registri kapabilitas untuk
security.pdfaagar instalasi Core-saja menampilkan pesan yang jelas, bukan jejak stack. - Buat dokumen, lalu panggil
enablePdfA()sebelum Anda menambahkan konten. - Tetapkan metadata dan tulis konten. Jangan panggil
setEncryption(); PDF/A melarang kunciEncrypt. - Simpan dokumen. Selama
save(),PdfAManagermenjadwalkan OutputIntent, profil International Color Consortium (ICC) yang disematkan, dan skema ekstensi Extensible Metadata Platform (XMP). - Jalankan
verapdf --flavour 4pada keluarannya. Gagalkan build jika kode keluarannya bukan nol. Putusan validator itulah gerbangnya.
Contoh lengkap
Bagian berjudul “Contoh lengkap”<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;use NextPDF\Exception\InvalidConfigException;use NextPDF\Support\CapabilityRegistry;
$out = __DIR__ . '/archival.pdf';
// Step 1 — probe before activating a Premium-gated feature.$registry = CapabilityRegistry::getInstance();if (!$registry->get('security.pdfa')->isAvailable()) { fwrite(STDERR, "PDF/A-4 requires nextpdf/pro. Run: composer require nextpdf/pro\n"); exit(1);}
try { $doc = Document::createStandalone();
// Step 2 — enable PDF/A-4 before content. Defaults to PdfA4. $doc->enablePdfA();
// Step 3 — metadata and content. No setEncryption() on a PDF/A document. $doc->setTitle('Archival Record 2026-0042'); $doc->setLanguage('en'); $doc->addPage(); $doc->setFont('helvetica', '', 12); $doc->cell(0, 10, 'This document targets PDF/A-4.', newLine: true);
// Step 4 — save. PdfAManager emits OutputIntent + ICC + XMP here. $doc->save($out);} catch (InvalidConfigException $e) { fwrite(STDERR, "PDF/A-4 activation failed: {$e->getMessage()}\n"); exit(1);}
// Step 5 — the gate. veraPDF, not the library, asserts conformance.$exitCode = 0;$output = [];exec('verapdf --flavour 4 ' . escapeshellarg($out), $output, $exitCode);
if ($exitCode !== 0) { fwrite(STDERR, "veraPDF FAILED — output is not PDF/A-4 conforming\n"); fwrite(STDERR, implode("\n", $output) . "\n"); exit(1);}
echo "veraPDF PASS — archival.pdf is reported PDF/A-4 conforming by veraPDF\n";Keluaran yang diharapkan
Bagian berjudul “Keluaran yang diharapkan”Ketika veraPDF lolos:
veraPDF PASS — archival.pdf is reported PDF/A-4 conforming by veraPDFKetika paket Premium tidak tersedia, skrip keluar dengan kode bukan nol disertai pesan yang dapat ditindaklanjuti dan tidak menulis berkas.
Kasus tepi
Bagian berjudul “Kasus tepi”- Gerbang Premium. Pada instalasi Core-saja,
enablePdfA()melemparInvalidConfigExceptionyang menyebutsecurity.pdfadan memberikan solusicomposer require nextpdf/pro. Periksa registri terlebih dahulu. - Konflik enkripsi. Memanggil
setEncryption(),useAesGcm(), atausetPublicKeyEncryption()pada dokumen PDF/A memunculkan eksepsi ketidaksesuaian dalam urutan pemanggilan apa pun. PDF/A melarang kunci trailerEncrypt. - Varian kesesuaian. Berikan
PdfAVersionkeenablePdfA()untuk4eatau4f. Nilai standarnya adalah4. - Gerbangnya adalah validator, bukan mesinnya.
save()yang berhasil berarti NextPDF telah menghasilkan artefak yang dipersyaratkan PDF/A-4. Hal itu sendiri tidak membuktikan kesesuaian. veraPDF-lah yang menegaskan kesesuaian; resep ini menjadikan putusannya sebagai gerbang. Jangan menyatakan bahwa sebuah berkas sesuai PDF/A-4 sampai validatornya lolos.
Kesesuaian
Bagian berjudul “Kesesuaian”| Pernyataan | Spesifikasi | Klausa | reference_id |
|---|---|---|---|
| Berkas PDF/A-4 boleh menentukan karakteristik warnanya dengan PDF/A OutputIntent yang merujuk ke profil International Color Consortium (ICC) yang disematkan. Sebagai alternatif, warna yang independen perangkat dapat ditentukan secara langsung; §6.2.4.1. | ISO 19005-4 | §6.2.3 | |
| Enkripsi dilarang di PDF/A-4. | ISO 19005-4 | §6.6.4 | |
| PDF/A-4 membawa identifikasi pdfaid dalam metadata Extensible Metadata Platform (XMP). | ISO 19005-4 | §6.7.5 |
Validatorlah yang menegaskan kesesuaian. Pustaka menghasilkan keluaran yang dimaksudkan untuk sesuai; validator yang menentukan.