PDF/A-4-uitvoer produceren en bewaken met veraPDF als oracle
In het kort
Sectie met titel “In het kort”Deze handleiding laat zien hoe u Portable Document Format/Archive (PDF/A-4)-uitvoer maakt met de Premium PdfAManager, veraPDF uitvoert en het oordeel ervan als build-poort gebruikt. NextPDF schrijft de artefacten; de validator bepaalt de conformiteit. De werkwijze sluit aan op examples/32-pdfa4-icc.php.
Vereisten
Sectie met titel “Vereisten”- Core is geïnstalleerd:
composer require nextpdf/core:^3. - Premium is geïnstalleerd:
composer require nextpdf/pro. PDF/A-4 is een Premium-functie (Architecture Decision Record ADR-011). Zonder Premium werptenablePdfA()eenInvalidConfigExceptionmet een upgradepad. - veraPDF op
PATHvoor de poortstap.
- Controleer het capability-register op
security.pdfa, zodat een Core-only-installatie een duidelijke melding toont in plaats van een stack trace. - Maak het document en roep vervolgens
enablePdfA()aan voordat u inhoud toevoegt. - Stel metadata in en schrijf inhoud. Roep
setEncryption()niet aan; PDF/A verbiedt deEncrypt-sleutel. - Sla het document op. Tijdens
save()neemt dePdfAManagerde OutputIntent, het ingesloten International Color Consortium (ICC)-profiel en de Extensible Metadata Platform (XMP)-uitbreidingsschema’s op. - Voer
verapdf --flavour 4uit op de uitvoer. Laat de build mislukken als de opdracht met een niet-nul-status wordt afgesloten. Het oordeel van de validator is de poort.
Volledig voorbeeld
Sectie met titel “Volledig voorbeeld”<?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";Verwachte uitvoer
Sectie met titel “Verwachte uitvoer”Wanneer veraPDF slaagt:
veraPDF PASS — archival.pdf is reported PDF/A-4 conforming by veraPDFWanneer het Premium-pakket ontbreekt, sluit het script af met een niet-nul-status en een bruikbare melding, en schrijft het geen bestand.
Randgevallen
Sectie met titel “Randgevallen”- Premium-poort. In een Core-only-installatie werpt
enablePdfA()eenInvalidConfigExceptiondiesecurity.pdfanoemt en als remediecomposer require nextpdf/proaanreikt. Controleer eerst het register. - Versleutelingsconflict. Het aanroepen van
setEncryption(),useAesGcm()ofsetPublicKeyEncryption()op een PDF/A-document veroorzaakt een incompatibiliteitsuitzondering, ongeacht de aanroepvolgorde. PDF/A verbiedt deEncrypt-trailersleutel. - Conformiteitsvariant. Geef een
PdfAVersiondoor aanenablePdfA()voor4eof4f. De standaardwaarde is4. - De poort is de validator, niet de engine. Een geslaagde
save()betekent dat NextPDF de artefacten heeft geschreven die PDF/A-4 vereist. Dit bewijst op zichzelf geen conformiteit. veraPDF stelt de conformiteit vast; dit recept gebruikt het oordeel ervan als poort. Verklaar pas dat een bestand PDF/A-4-conform is wanneer de validator slaagt.
Conformiteit
Sectie met titel “Conformiteit”| Verklaring | Specificatie | Clausule | reference_id |
|---|---|---|---|
| Een PDF/A-4-bestand mag zijn kleurkenmerken opgeven met een PDF/A OutputIntent die verwijst naar een ingesloten International Color Consortium (ICC)-profiel. Apparaatonafhankelijke kleur kan in plaats daarvan rechtstreeks worden opgegeven; zie §6.2.4.1. | ISO 19005-4 | §6.2.3 | |
| Versleuteling is verboden in PDF/A-4. | ISO 19005-4 | §6.6.4 | |
| PDF/A-4 bevat pdfaid-identificatie in Extensible Metadata Platform (XMP)-metadata. | ISO 19005-4 | §6.7.5 |
De validator stelt de conformiteit vast. De bibliotheek produceert uitvoer die bedoeld is om te voldoen; de validator beslist.