Lewati ke konten

Hasilkan keluaran PDF/A-4 dan jadikan oracle veraPDF sebagai gerbang

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.

  • 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() melempar InvalidConfigException beserta jalur upgrade-nya.
  • veraPDF di PATH untuk langkah gerbang.
  1. Periksa registri kapabilitas untuk security.pdfa agar instalasi Core-saja menampilkan pesan yang jelas, bukan jejak stack.
  2. Buat dokumen, lalu panggil enablePdfA() sebelum Anda menambahkan konten.
  3. Tetapkan metadata dan tulis konten. Jangan panggil setEncryption(); PDF/A melarang kunci Encrypt.
  4. Simpan dokumen. Selama save(), PdfAManager menjadwalkan OutputIntent, profil International Color Consortium (ICC) yang disematkan, dan skema ekstensi Extensible Metadata Platform (XMP).
  5. Jalankan verapdf --flavour 4 pada keluarannya. Gagalkan build jika kode keluarannya bukan nol. Putusan validator itulah gerbangnya.
<?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";

Ketika veraPDF lolos:

veraPDF PASS — archival.pdf is reported PDF/A-4 conforming by veraPDF

Ketika paket Premium tidak tersedia, skrip keluar dengan kode bukan nol disertai pesan yang dapat ditindaklanjuti dan tidak menulis berkas.

  • Gerbang Premium. Pada instalasi Core-saja, enablePdfA() melempar InvalidConfigException yang menyebut security.pdfa dan memberikan solusi composer require nextpdf/pro. Periksa registri terlebih dahulu.
  • Konflik enkripsi. Memanggil setEncryption(), useAesGcm(), atau setPublicKeyEncryption() pada dokumen PDF/A memunculkan eksepsi ketidaksesuaian dalam urutan pemanggilan apa pun. PDF/A melarang kunci trailer Encrypt.
  • Varian kesesuaian. Berikan PdfAVersion ke enablePdfA() untuk 4e atau 4f. Nilai standarnya adalah 4.
  • 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.
PernyataanSpesifikasiKlausareference_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.