Salta ai contenuti

Mappatura della specifica PDF/UA-2 (ISO 14289-2)

Questa pagina mette in relazione le funzionalità di NextPDF Core con le disposizioni di ISO 14289-2 (PDF/UA-2). Indica quali disposizioni la libreria aiuta l’autore a soddisfare e quali sono esplicitamente fuori ambito. Non costituisce una dichiarazione di conformità. La conformità di un file dipende dal contenuto dell’autore, dal markup di origine e dalla convalida tramite un validatore PDF/UA esterno.

Terminal window
composer require nextpdf/core

PDF/UA-2 (ISO 14289-2) definisce i requisiti per i PDF accessibili. Questi requisiti si basano sulle funzionalità di struttura logica di ISO 32000-2 §14.7 e sulle voci di supporto all’accessibilità di ISO 32000-2 §14.9. Un file conforme viene identificato tramite lo schema di identificazione di ISO 14289-2 §5. Un file conforme contiene un albero di struttura la cui radice ha un singolo elemento Document (ISO 14289-2 §8.2.5.2). Un file conforme utilizza tipi di struttura standard, in modo che la tecnologia assistiva possa ricondurre ogni tag a un ruolo noto.

NextPDF fornisce le primitive per la creazione di questo modello: costruzione dell’albero di struttura, mappatura standard dei ruoli, tagging del contenuto marcato a partire da HTML semantico e attributi di lingua BCP-47. NextPDF non deduce la semantica assente dal contenuto di origine. NextPDF non esegue un validatore di conformità. Le primitive sono progettate per il modello di ISO 14289-2 §3.1, in cui la tecnologia assistiva consuma l’albero di struttura. Il fatto che un documento specifico soddisfi ogni disposizione dipende dall’input dell’autore e da un validatore esterno.

Area della disposizionePunto di ingresso di NextPDF
Abilitazione del PDF con tag, mark-info, lingua del catalogoDocument::enableTaggedPdf(string $lang, ?ConformancePolicy)
Lingua naturale a livello di documentoDocument::setLanguage(string $lang)
Albero di struttura e singola radice DocumentStructureTree::createRoot(), StructureTree::addElement()
Vocabolario dei tipi di struttura standardRoleMap::standard()
Lingua per elemento, testo alternativo e testo sostitutivoStructureElement: attributi del costruttore
Convalida rigorosa BCP-47Bcp47Validator, ConformancePolicy::strictUa2()
Correzione euristica (opt-in)AccessibilityAutoFixerRegistry
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
$doc = Document::createStandalone();
$doc->enableTaggedPdf(lang: 'en');
$doc->setTitle('PDF/UA-2 structure demonstration');
$doc->addPage();
$doc->writeHtml('<h1>Title</h1><p>Body.</p><ul><li>Item</li></ul>');
$doc->save(__DIR__ . '/output/ua2.pdf');
// Then validate with an external checker. NextPDF does not assert
// conformance on your behalf:
// verapdf --flavour ua2 output/ua2.pdf

Vedere l’esempio di produzione del modulo Accessibility per il writer basato su dependency injection, con convalida rigorosa BCP-47, logging informativo e gestione degli errori. La stessa configurazione si applica a un flusso di lavoro di creazione PDF/UA-2. L’unica aggiunta è la fase di convalida esterna successiva alla generazione. Questa fase è obbligatoria per una dichiarazione di conformità ed è responsabilità del chiamante.

  • Un documento in cui il PDF con tag è abilitato ma che non collega alcun discendente di struttura non espone intenzionalmente il blocco di identificazione PDF/UA-2 (ISO 14289-2 §5). Un albero di struttura vuoto viene rifiutato dai validatori.
  • La combinazione di enablePdfA() ed enableTaggedPdf() porta il discriminatore di conformità a valore singolo a seguire la logica last-wins, mentre gli effetti collaterali strutturali restano additivi. Un avviso CONFORMANCE_MODE_CLOBBERED rende osservabile questo comportamento.
  • ISO 14289-2 §7.2.2 consente a un documento conforme di dichiarare anche la conformità a normative di accessibilità più ampie. NextPDF emette esclusivamente lo schema di identificazione PDF/UA-2 e non emette altri metadati di dichiarazione normativa.

Mappatura delle disposizioni e non copertura esplicita

Sezione intitolata “Mappatura delle disposizioni e non copertura esplicita”
Area della disposizione (ISO 14289-2 / ISO 32000-2)Supporto di NextPDFNote
Schema di identificazione PDF/UA-2 (ISO 14289-2 §5)SupportaEmesso solo quando l’albero di struttura ha discendenti.
Singolo elemento Document sotto la radice dell’albero di struttura (ISO 14289-2 §8.2.5.2; ISO 32000-2 §14.7.2)SupportacreateRoot() impone un singolo Document radice.
Tipi di struttura standard e mappa dei ruoli (ISO 32000-2 §14.7; Well-Tagged PDF §8.2.5.1)SupportaRoleMap::standard() più lo spazio dei nomi PDF 2.0.
Sequenze di contenuto marcato e albero padre (ISO 32000-2 §14.7.2)SupportaIdentificatori per pagina, continuazione tra pagine.
Lingua naturale del catalogo e per elemento (ISO 32000-2 §14.9; ISO 14289-2 §8.4.4)SupportaBCP-47; la modalità rigorosa rifiuta i tag malformati.
Contenitori del testo alternativo e sostitutivo (ISO 32000-2 §14.9)Supporta il contenitore; il contenuto è fornito dall’autoreLa libreria non genera testo alternativo.
Ordine di lettura logico (ISO 32000-2 §14.7)Supporta l’ordine di origine; non riordinaUn ordine di lettura corretto è responsabilità dell’autore.
Associazione e ambito delle intestazioni di tabellaFuori ambito oltre il markup HTMLNon viene dedotto; dipende dal markup di origine.
Correttezza dei livelli di intestazione e strutturaFuori ambitoL’autore deve fornire una gerarchia di intestazioni corretta.
Verifica PDF/UA-2 end-to-endFuori ambitoNessun controllore incluso; convalidare esternamente.
Attestazione o certificazione di conformitàFuori ambitoNon viene fornita dalla libreria.

Le funzionalità dell’albero di struttura aggiungono un singolo passaggio di serializzazione lineare su tutti gli elementi; il costo dipende soprattutto dalla pipeline HTML, più che dall’emissione dei tag. Il limite performance_budget si applica a un tipico documento semantico multipagina.

I valori degli attributi di lingua e accessibilità vengono sottoposti a escape tramite PdfStringEscaper prima di essere inseriti nella sintassi degli oggetti PDF e la convalida BCP-47 in modalità rigorosa limita la superficie di input dei tag di lingua al confine dell’API. Trattare il testo alternativo e i titoli forniti dall’autore come output non attendibile.

NextPDF emette una struttura coerente con il modello dell’albero di struttura PDF/UA-2 definito in ISO 14289-2 e ISO 32000-2 §14.7. Non dichiara che un determinato documento sia conforme a PDF/UA-2. Convalidare con un validatore PDF/UA (ad esempio, veraPDF); la libreria non dichiara la conformità per conto del chiamante. Il test golden veraPDF UA-2 incluso viene saltato quando il binario veraPDF è assente, perciò qui non viene dichiarato alcun esito positivo di conformità. Le clausole citate sono parafrasate, mai riportate testualmente; gli hash dei chunk sono registrati in docs/public/modules/core/_normative-evidence-a11y.md.

Una dichiarazione di conformità PDF/UA-2 richiede una semantica fornita dall’autore (testo alternativo, gerarchia di intestazioni corretta, associazione delle intestazioni di tabella, ordine di lettura previsto, classificazione del contenuto decorativo) oltre alla convalida con un validatore esterno. Nessuno di questi elementi viene prodotto o verificato dalla libreria. Il runtime emette un avviso Degraded / ComplianceRisk che invita il chiamante a convalidare esternamente per l’approvazione alla produzione. La conformità è una proprietà del documento finale e del processo di creazione, non della chiamata all’API.