Risoluzione dei problemi: errori di convalida PDF/A e PDF/UA
Queste voci riguardano gli errori sollevati dal motore quando deve mantenere un documento all’interno del profilo PDF/A o PDF/UA. I numeri di clausola riportati di seguito sono quelli citati dal motore nel codice sorgente e nei messaggi di eccezione. Questa pagina li parafrasa. Il motore segnala gli errori di profilo che riesce a rilevare, ma non certifica la conformità del documento. Il verdetto autorevole di conformità proviene da un validatore esterno che applica il proprio set di regole.
Voce: la cifratura viene rifiutata in PDF/A
Sezione intitolata “Voce: la cifratura viene rifiutata in PDF/A”- Sintomo.
NextPDF\Security\Exception\IncompatiblePdfAModeExceptioncon un messaggio che segnala che un’operazione di cifratura è vietata in una modalità PDF/A. - Causa probabile. Nella pipeline è stata abilitata una modalità PDF/A ed è stata richiesta anche la cifratura. Il motore cita ISO 19005-{1,2,3,4} §6.1.3: la chiave
Encryptnon deve essere presente nel trailer di un file PDF/A. Il motore interpreta questa condizione come un rifiuto assoluto, indipendentemente dall’ordine delle chiamate. - Evidenza / diagnosi.
getContext()restituiscepdfa_modeeencryption_operation. Il test del percorso di erroretests/SecurityScenarios/PdfAEncryptionRefusalTest.phpverifica che il rifiuto si attivi sia quando PDF/A viene abilitato prima sia quando viene abilitato dopo la chiamata di cifratura. - Soluzione.
- Stabilire quale proprietà deve avere il documento: conformità per l’archiviazione o cifratura.
- Per un documento destinato all’archiviazione, rimuovere la chiamata di cifratura.
- Per un documento cifrato, rimuovere la chiamata di abilitazione di PDF/A.
- Eseguire nuovamente la pipeline.
- Argomenti correlati. Cifratura e autorizzazioni.
Voce: un filtro immagine è vietato in PDF/A-1
Sezione intitolata “Voce: un filtro immagine è vietato in PDF/A-1”- Sintomo.
Pdf14FeatureRejectedExceptionsollevata durante l’acquisizione dell’immagine, con un messaggio che cita/JPXDecodeo/JBIG2Decodee la clausolaISO 19005-1:2005 §6.1.13. - Causa probabile. Una build PDF/A-1 ha acquisito un’immagine che utilizza un filtro introdotto dopo PDF 1.4. PDF/A-1 si basa sul set di funzionalità di PDF 1.4, quindi
PdfA1FeatureGuardrifiuta JPEG 2000 (/JPXDecode) e JBIG2 (/JBIG2Decode). - Evidenza / diagnosi.
src/Writer/PdfA1FeatureGuard.phpcontiene l’elenco dei filtri vietati e solleva l’eccezione con la clausola citata. Il guard rifiuta solo nel profilo PDF/A-1; i profili PDF/A-2, PDF/A-3 e PDF 2.0 consentono tali filtri. - Soluzione.
- Ricodificare l’immagine di origine senza JPEG 2000 o JBIG2, ad esempio risalvandola come JPEG baseline o come immagine compressa con Flate.
- In alternativa, impostare come obiettivo PDF/A-2 o PDF/A-3, che consentono tali filtri.
- Eseguire nuovamente la build.
- Argomenti correlati. Riferimento sulla conformità.
Voce: un font non è incorporato in PDF/A
Sezione intitolata “Voce: un font non è incorporato in PDF/A”- Sintomo. Una build PDF/A non supera la fase di convalida dei font; un validatore esterno segnala un font non incorporato.
- Causa probabile. Un glifo è stato disegnato con un font il cui programma non è stato incorporato. Il contratto del gestore PDF/A stabilisce che ogni font deve essere incorporato; nessun font standard-14 è consentito senza incorporamento.
- Evidenza / diagnosi.
src/Contracts/PdfAManagerInterface.phpdichiaravalidateFont(string $fontName, bool $isEmbedded, array $cmapForward)con la regola documentata «All fonts must be embedded; no standard 14 fonts allowed without embedding.» L’implementazione concreta è fornita innextpdf/pro. - Soluzione.
- Identificare il font segnalato come non incorporato.
- Configurare quel font con un file di programma incorporabile anziché affidarsi a un font standard-14 integrato.
- Per l’interazione con la sostituzione Base 14, consultare la voce relativa a font e tag.
- Eseguire nuovamente la build e ripetere la convalida.
- Argomenti correlati. Font e tag.
Voce: è presente JavaScript e la convalida PDF/A non riesce
Sezione intitolata “Voce: è presente JavaScript e la convalida PDF/A non riesce”- Sintomo. Una build PDF/A non supera la convalida JavaScript oppure un validatore esterno segnala un’azione JavaScript.
- Causa probabile. Il documento, o un campo modulo, contiene un’azione JavaScript. Il contratto del gestore PDF/A cita ISO 19005-4:2020 §6.7.1, che vieta le azioni JavaScript.
- Evidenza / diagnosi.
PdfAManagerInterface::validateNoJavaScript()evalidateNoJavaScriptActions()citano entrambe §6.7.1 nei rispettivi docblock. - Soluzione.
- Rimuovere l’azione JavaScript dal documento o dal campo del modulo.
- Se l’azione è necessaria per il comportamento previsto, il documento non può essere PDF/A; produrre una variante non PDF/A per quell’uso.
- Eseguire nuovamente la build e ripetere la convalida.
- Argomenti correlati. Riferimento sulla conformità.
Voce: l’output con tag non dichiara PDF/UA-2
Sezione intitolata “Voce: l’output con tag non dichiara PDF/UA-2”- Sintomo. Un documento creato con i tag abilitati non viene riconosciuto come PDF/UA-2 oppure la dichiarazione PDF/UA-2 è assente.
- Causa probabile. L’albero della struttura è vuoto. Il motore non dichiara PDF/UA-2 per un documento privo di struttura con tag, perché un albero della struttura vuoto non soddisfa il profilo.
- Evidenza / diagnosi. Il test del percorso di errore
tests/Integration/Accessibility/EmptyTaggedPdfDoesNotAdvertisePdfUa2Test.phpverifica che un documento con tag vuoto non dichiari PDF/UA-2. Si tratta del comportamento documentato del motore, non di un difetto. - Soluzione.
- Verificare che il contenuto venga emesso tramite il percorso dei tag, in modo che l’albero della struttura risulti popolato e non vuoto.
- Verificare che le sequenze di marked content corrispondano a elementi di struttura.
- Eseguire nuovamente la build e ricontrollare lo stato PDF/UA-2.
- Argomenti correlati. Font e tag.
Voce: PDF/UA-2 non riesce a causa di una lingua mancante o non valida
Sezione intitolata “Voce: PDF/UA-2 non riesce a causa di una lingua mancante o non valida”- Sintomo. Un controllo PDF/UA-2 fallisce perché una voce di lingua è assente o non è un tag valido.
- Causa probabile. Il documento o un elemento di struttura non dispone di una lingua valida. PDF/UA-2 richiede una dichiarazione di lingua naturale; un valore
Langmancante o malformato non supera il controllo rigoroso. - Evidenza / diagnosi. Il test del percorso di errore
tests/Unit/Conformance/PdfUa2Section844LangStrictTest.phpcopre il requisito rigoroso sulla lingua. I tag di lingua vengono convalidati tramitesrc/Accessibility/Bcp47Validator.php; un tag non valido sollevasrc/Accessibility/InvalidBcp47TagException.php. - Soluzione.
- Impostare una lingua a livello di documento come tag BCP-47 valido, ad esempio
en-USozh-Hant-TW. - Quando un passaggio è in una lingua diversa, impostare la lingua su quell’elemento di struttura.
- Eseguire nuovamente la build e ripetere la convalida.
- Impostare una lingua a livello di documento come tag BCP-47 valido, ad esempio
- Argomenti correlati. Font e tag.
Casi limite e insidie
Sezione intitolata “Casi limite e insidie”- I rifiuti PDF/A e PDF/UA descritti qui vengono prodotti all’interno del motore. Sono indipendenti dal verdetto di un validatore esterno e non lo sostituiscono: eseguire un validatore come veraPDF per ottenere il verdetto autorevole.
- Il writer concreto per gli oggetti richiesti da PDF/A (flusso di metadati XMP, output intent con un profilo ICC) viene risolto in fase di esecuzione da
nextpdf/pro. Con il solo pacchetto core installato, tali oggetti non vengono emessi; una build con il solo core non è un produttore PDF/A completo. - Il rifiuto della cifratura è assoluto e indipendente dall’ordine: abilitare PDF/A dopo la chiamata di cifratura solleva comunque il rifiuto.
Vedere anche
Sezione intitolata “Vedere anche”Glossario: output intent · albero della struttura