Produrre output PDF/A-4 e applicare un controllo di conformità con veraPDF
In breve
Sezione intitolata “In breve”Questa ricetta genera output PDF/A-4 con il PdfAManager Premium, esegue veraPDF e usa il suo verdetto come controllo di build. La libreria produce gli artefatti; il validatore decide la conformità. La ricetta segue examples/32-pdfa4-icc.php.
Prerequisiti
Sezione intitolata “Prerequisiti”- Core installato:
composer require nextpdf/core:^3. - Premium installato:
composer require nextpdf/pro. PDF/A-4 è una funzionalità di livello Premium (ADR-011). Senza Premium,enablePdfA()generaInvalidConfigExceptioncon un percorso di aggiornamento indicato. - veraPDF in
PATHper il passaggio di verifica.
Ricetta
Sezione intitolata “Ricetta”- Interrogare il registro delle capacità per
security.pdfain modo che un’installazione solo Core riceva un messaggio chiaro anziché una traccia dello stack. - Creare il documento e chiamare
enablePdfA()prima di aggiungere contenuti. - Impostare i metadati e scrivere il contenuto. Non chiamare
setEncryption(); PDF/A vieta la chiaveEncrypt. - Salvare. Durante
save(), ilPdfAManagerpianifica l’OutputIntent, il profilo ICC incorporato e gli schemi di estensione XMP. - Eseguire
verapdf --flavour 4sull’output. Far fallire la build se il codice di uscita è diverso da zero. Il verdetto del validatore è il controllo.
Esempio completo
Sezione intitolata “Esempio completo”<?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";Output previsto
Sezione intitolata “Output previsto”Quando il controllo veraPDF viene superato:
veraPDF PASS — archival.pdf is reported PDF/A-4 conforming by veraPDFQuando il pacchetto Premium è assente, lo script termina con codice diverso da zero, restituisce un messaggio con indicazioni operative e non scrive alcun file.
Casi limite
Sezione intitolata “Casi limite”- Controllo Premium. In un’installazione solo Core,
enablePdfA()generaInvalidConfigExceptionindicandosecurity.pdfae la soluzionecomposer require nextpdf/pro. Interrogare prima il registro. - Conflitto di cifratura. Chiamare
setEncryption(),useAesGcm()osetPublicKeyEncryption()su un documento PDF/A solleva un’eccezione di incompatibilità in qualsiasi ordine di chiamata. PDF/A vieta la chiaveEncryptdel trailer. - Variante di conformità. Passare un
PdfAVersionaenablePdfA()per selezionare4eo4f. Il valore predefinito è4. - Il controllo spetta al validatore, non al motore. Un
save()riuscito significa che NextPDF ha emesso gli artefatti richiesti da PDF/A-4. Di per sé, non dimostra la conformità. veraPDF attesta la conformità; questa ricetta usa il suo verdetto come controllo. Non dichiarare che un file è conforme a PDF/A-4 finché il validatore non supera il controllo.
Conformità
Sezione intitolata “Conformità”| Affermazione | Specifica | Clausola | reference_id |
|---|---|---|---|
| Un file PDF/A-4 può specificare le proprie caratteristiche di colore con un OutputIntent PDF/A che fa riferimento a un profilo ICC incorporato (il colore indipendente dal dispositivo può essere specificato anche direttamente; §6.2.4.1). | ISO 19005-4 | §6.2.3 | |
| La cifratura è vietata in PDF/A-4. | ISO 19005-4 | §6.6.4 | |
| PDF/A-4 include l’identificazione pdfaid nei metadati XMP. | ISO 19005-4 | §6.7.5 |
Il validatore attesta la conformità. La libreria produce un output destinato a essere conforme; il validatore decide.