ISO 19005-4 (PDF/A-4): mappatura delle funzionalità NextPDF
In breve
Sezione intitolata “In breve”ISO 19005-4:2020 (PDF/A-4) è il profilo di archiviazione per PDF 2.0. Questa pagina ne mappa il supporto in NextPDF in modo trasparente: cosa emette Core, cosa aggiunge l’estensione nextpdf/pro e cosa NextPDF non copre esplicitamente. NextPDF emette strutture pertinenti a PDF/A-4; solo un validatore può attestare che un file sia conforme.
Installazione
Sezione intitolata “Installazione”composer require nextpdf/core:^3# PDF/A-4 file authoring (OutputIntent + ICC + XMP) requires:# composer require nextpdf/proPanoramica concettuale
Sezione intitolata “Panoramica concettuale”ISO 19005-4:2020 si basa su ISO 32000-2:2020 (PDF 2.0), a differenza di PDF/A-2 e PDF/A-3, che si basano su ISO 32000-1:2008 (PDF 1.7). NextPDF codifica questa differenza di lineage in ConformanceMode::requiresPdf17(). Questo metodo restituisce false per tutti i casi PDF/A-4 e true per PDF/A-2 e PDF/A-3.
PDF/A-4 definisce tre forme di conformità. Il profilo base non ha alcuna lettera pdfa:conformance. PDF/A-4e (Annex B, contenuti tecnici / 3D) imposta pdfa:conformance = E. PDF/A-4f (Annex A, file incorporati) imposta pdfa:conformance = F. ISO 19005-4:2020 §6.7.3 specifica lo schema di identificazione PDF/A nello spazio dei nomi AIIM. Stabilisce che un file non conforme né a PDF/A-4e né a PDF/A-4f non fornisce alcuna voce pdfa:conformance. NextPDF lo rispecchia esattamente in ConformanceMode::pdfaConformanceLetter(): PdfA4 restituisce la stringa vuota, PdfA4e restituisce E, PdfA4f restituisce F.
Il confine critico tra le edizioni è questo: l’authoring di file PDF/A-4 — il dizionario OutputIntent, il profilo ICC incorporato, lo schema di estensione XMP, le garanzie di subset dei font e il divieto di cifratura — è implementato nel PdfAManager Enterprise. Il PdfAManager Enterprise è incluso nell’estensione nextpdf/pro. In un’installazione solo Core, Document::enablePdfA() solleva InvalidConfigException perché la capability security.pdfa non è registrata. L’esempio eseguibile (examples/32-pdfa4-icc.php) lo dimostra interrogando il registry delle capability e gestendo il fallback con un messaggio chiaro, invece che con uno stack trace.
Pertanto, con il solo Core, la superficie PDF/A-4 si limita al discriminatore: NextPDF registra quale variante PDF/A-4 dichiara un documento. NextPDF emette i marcatori pdfaid:part = 4 / pdfa:conformance definiti dallo schema. Produrre un file PDF/A-4 completo — e validarne la conformità — sono passaggi distinti. Il primo passaggio richiede nextpdf/pro. Il secondo passaggio richiede veraPDF.
Superficie API
Sezione intitolata “Superficie API”| Superficie | Edizione | Cosa fornisce |
|---|---|---|
ConformanceMode::PdfA4 / PdfA4e / PdfA4f | core | Il discriminatore di variante |
ConformanceMode::pdfaPart() → 4 | core | Numero di parte ISO 19005 |
ConformanceMode::pdfaConformanceLetter() → '' / 'E' / 'F' | core | Lettera di conformità §6.7.3 |
ConformanceMode::requiresPdf17() → false | core | Gate per il lineage PDF 2.0 |
Document::enablePdfA() | pro | Authoring di OutputIntent + ICC + XMP; solleva InvalidConfigException in Core |
Esempio di codice — Avvio rapido
Sezione intitolata “Esempio di codice — Avvio rapido”<?php
declare(strict_types=1);
use NextPDF\Conformance\ConformanceMode;
// Core: introspect the declared PDF/A-4f contract.$mode = ConformanceMode::PdfA4f;$mode->pdfaPart(); // 4$mode->pdfaConformanceLetter(); // 'F' (ISO 19005-4:2020 §6.7.3 / Annex A)$mode->requiresPdf17(); // false (PDF/A-4 is PDF 2.0 lineage)Esempio di codice — Produzione
Sezione intitolata “Esempio di codice — Produzione”<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Exception\InvalidConfigException;use NextPDF\Support\CapabilityRegistry;
// PDF/A-4 file authoring requires the Premium extension. Probe first so a// Core-only install gets a clear rationale, not a stack trace.$registry = CapabilityRegistry::getInstance();if (!$registry->get('security.pdfa')->isAvailable()) { throw new InvalidConfigException( configKey: 'security.pdfa', givenValue: 'Core-only install', expectedType: 'nextpdf/pro extension (Enterprise PdfAManager)', );}
$doc = Document::createStandalone();$doc->enablePdfA(); // Emits OutputIntent + ICC + pdfaid XMP (Premium).// … write content …$doc->save(__DIR__ . '/out/archive-a4.pdf');
// The file now CARRIES PDF/A-4 structures. Conformance is still unproven// until veraPDF asserts it://// verapdf --flavour 4 out/archive-a4.pdfCasi limite e insidie
Sezione intitolata “Casi limite e insidie”- Core non può eseguire l’authoring di un file PDF/A-4.
enablePdfA()solleva un’eccezione in Core. Solo il discriminatore e i marcatori XMP rientrano nella superficie Core. - Il PDF/A-4 base non emette alcun
pdfa:conformance. Ai sensi di ISO 19005-4:2020 §6.7.3, solo PDF/A-4e e PDF/A-4f impostano la lettera.ConformanceMode::PdfA4restituisce la stringa vuota per progettazione. - Lineage PDF 2.0, non PDF 1.7. Un errore comune è riutilizzare una pipeline PDF/A-3 che si aspetta
%PDF-1.7. PDF/A-4 è PDF 2.0;requiresPdf17()restituiscefalsein tutti i casi PDF/A-4. - La validazione ICC è Premium. La validazione ICC dell’OutputIntent secondo ISO 19005-4:2020 §6.2.2 (magic
acsp, tabella dei tag, punto di bianco D50) spetta alPdfAManagerEnterprise, non a Core. - La libreria non certifica il file. Impostare
PdfA4fed emettere i marcatori non rende l’output un file PDF/A-4f valido. Eseguire veraPDF.
Prestazioni
Sezione intitolata “Prestazioni”La superficie PDF/A-4 di Core consiste in pura introspezione di value-type (dispatch enum match, O(1), nessuna allocazione). Il percorso di authoring Premium aggiunge l’OutputIntent e il pacchetto ICC alla scrittura. Il costo corrisponde alla dimensione del profilo incorporato, gestita all’interno del budget del writer. La validazione veraPDF è un passaggio out-of-band, non fa parte della generazione.
Note sulla sicurezza
Sezione intitolata “Note sulla sicurezza”PDF/A-4 vieta la cifratura. Il PdfAManager Enterprise applica l’invariante del divieto di cifratura. Il PdfAManager Enterprise ordina l’applicazione di questa invariante rispetto a enablePdfA() in modo che un chiamante non possa combinare accidentalmente AES-GCM con la modalità di archiviazione. Il forward-guard di Core in HasSecurity::enablePdfA() rifiuta la combinazione non supportata prima che venga scritto alcun byte. Per i dettagli sulla pipeline di archiviazione, consultare il threat model del progetto.
Conformità
Sezione intitolata “Conformità”Questa è una mappatura delle funzionalità, non una dichiarazione di conformità.
| Area ISO 19005-4:2020 | Clausola | Copertura NextPDF | Stato |
|---|---|---|---|
| Schema di identificazione della variante | §6.7.3 | ConformanceMode emette pdfaid:part = 4 e la lettera pdfa:conformance corrispondente | Dichiarato (Core; testato a livello di unità in tests/Unit/Conformance/) |
| Gate per il lineage PDF 2.0 | §6.7.3 / base | requiresPdf17() restituisce false per tutti i casi PDF/A-4 | Verificato (testato a livello di unità) |
| OutputIntent + ICC incorporato | §6.2.2 | Enterprise PdfAManager (nextpdf/pro) | Solo Premium (non Core) |
| Schema di estensione XMP, subsetting dei font, divieto di cifratura | §6 / Annex A/B | Enterprise PdfAManager (nextpdf/pro) | Solo Premium (non Core) |
| Determinazione della conformità | Clausola 5 | Non eseguita da NextPDF — veraPDF | Esplicitamente non coperta |
Il supporto non equivale alla conformità — e questa pagina separa deliberatamente i due concetti. (a) NextPDF Core emette le strutture che ISO 19005-4:2020 §6.7.3 definisce per l’identificazione della variante — si tratta di implementazione, comprovata da tests/Unit/Conformance/ConformanceModePdfAVariantTest.php (superato). (b) Che un file sia conforme a PDF/A-4 è un’asserzione distinta che solo un validatore può formulare, ai sensi di ISO 19005-4:2020 Clausola 5. La Clausola 5 stabilisce che l’effettiva determinazione della conformità viene eseguita da uno strumento di verifica rispetto ai requisiti normativi. NextPDF formula l’affermazione (a). NextPDF non formula l’affermazione (b). Validare con veraPDF (verapdf --flavour 4 …, oppure php oracle/run.php per l’harness dell’oracolo — eseguito solo quando il binario veraPDF è presente, con gate opt-in).
Le espressioni «PDF/A-4 compliant», «fully conformant» e «PDF/A-4 certified» sono deliberatamente assenti da questa pagina. NextPDF emette strutture pertinenti a PDF/A-4; non garantisce un file conforme.
Le citazioni sono parafrasate dal corpus di conformità di NextPDF. I digest completi reference_id da 64 caratteri sono registrati nel front matter della pagina e in docs/public/modules/core/_normative-evidence-conf.md.
Vedere anche
Sezione intitolata “Vedere anche”- Modulo Conformance — routing di
ConformanceModee oracle veraPDF - Modulo Compliance — validatore PDF/R-1 e grammatica Arlington
- Mappatura della specifica PDF/UA-2 — la controparte per il profilo di accessibilità