PDF Taggato (Accessibilità)
Il modulo Accessibility (StructureTreeManager, RoleMap, TaggedContentManager) abilita output PDF taggato per screen reader e tecnologie assistive. Quando abilitato, ogni pezzo di contenuto è avvolto in elementi struttura che descrivono il suo ruolo semantico. Tutti i metodi tagging restituiscono static per concatenazione.
Riferimento Rapido
| Metodo | Descrizione |
|---|---|
setTaggedPdf() | Abilita o disabilita modalità PDF taggato |
setLanguage() | Imposta lingua primaria documento (BCP 47) |
openTag() | Inizia elemento struttura taggato |
closeTag() | Termina elemento struttura taggato |
image(..., alt:) | Aggiungi immagine con testo alt per accessibilità |
Abilitazione PDF Taggato
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->setTaggedPdf(true)
->setLanguage('en-US')
->addPage()
->setFont('Helvetica', '', 12);Quando setTaggedPdf(true) è chiamato, il StructureTreeManager è inizializzato lazy e un dizionario MarkInfo con Marked = true è scritto nel catalogo PDF.
Elementi Struttura
TCPDF-Next supporta l'insieme tag standard PDF 2.0 completo:
| Categoria | Tag |
|---|---|
| Raggruppamento | Document, Part, Sect, Div, BlockQuote, Caption, NonStruct |
| Intestazioni | H1, H2, H3, H4, H5, H6 |
| Paragrafi | P, Span |
| Liste | L, LI, Lbl, LBody |
| Tabelle | Table, TR, TH, TD, THead, TBody, TFoot |
| Inline | Link, Em, Strong, Code |
| Illustrazioni | Figure, Formula, Form |
Tagging Base
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->setTaggedPdf(true)
->setLanguage('en-US')
->addPage()
->setFont('Helvetica', '', 12)
->openTag('H1')
->cell(0, 10, 'Annual Report 2026', newLine: true)
->closeTag('H1')
->openTag('P')
->multiCell(0, 6, 'This document demonstrates tagged PDF output for accessibility compliance.')
->closeTag('P')
->save('tagged-basic.pdf');I tag devono essere propriamente annidati. Il StructureTreeManager valida l'annidamento e lancia un'eccezione su mismatch.
Tabelle Taggate
$pdf->openTag('Table')
->openTag('TR')
->openTag('TH')->cell(50, 8, 'Quarter')->closeTag('TH')
->openTag('TH')->cell(50, 8, 'Revenue')->closeTag('TH')
->closeTag('TR')
->openTag('TR')
->openTag('TD')->cell(50, 8, 'Q1')->closeTag('TD')
->openTag('TD')->cell(50, 8, '$1,200,000')->closeTag('TD')
->closeTag('TR')
->closeTag('Table');Attributi Tag
Passa attributi aggiuntivi quando apri un tag:
$pdf->openTag('Figure', ['Alt' => 'Company logo', 'ActualText' => 'Acme Corp Logo'])
->image('/path/to/logo.png', 10, 50, 40, 40)
->closeTag('Figure');Attributi comuni:
| Attributo | Descrizione |
|---|---|
Alt | Testo alternativo per elementi non-testo |
ActualText | Sostituzione testo esatto per l'elemento |
Lang | Override lingua per questo elemento (BCP 47) |
Title | Titolo leggibile umano |
Il metodo image() accetta anche un parametro alt come scorciatoia — $pdf->image('chart.png', 10, 80, 120, 60, alt: 'Revenue chart') avvolge automaticamente l'immagine in un tag Figure.
Mappatura Ruoli
Il RoleMap mappa nomi tag personalizzati a tipi struttura PDF standard. Questo ti consente di usare nomi dominio-specifici mentre mantieni compatibilità PDF/UA:
$pdf->openTag('Invoice', ['roleMap' => 'Sect'])
->openTag('LineItem', ['roleMap' => 'P'])
->cell(0, 8, 'Widget x 10 — $500.00', newLine: true)
->closeTag('LineItem')
->closeTag('Invoice');La mappa ruoli è scritta alla radice albero struttura così i validatori risolvono tag personalizzati a equivalenti standard. Per contenuto multilingua, override lingua per-elemento: ->openTag('P', ['Lang' => 'de-DE']).
Conformità PDF/UA
Per produrre un documento completamente conforme PDF/UA, assicura:
- PDF taggato è abilitato —
setTaggedPdf(true) - Lingua documento è impostata —
setLanguage('en-US') - Tutto il contenuto è taggato — nessun contenuto non taggato fuori elementi struttura
- Tutte le immagini hanno testo alt — tramite parametro
alt:o tagFigurecon attributoAlt - Le tabelle usano
THper intestazioni — celle intestazione devono essere distinte da celle dati - I font sono incorporati — TCPDF-Next incorpora tutti i font per impostazione predefinita
Integrazione con PDF/A-4
PDF taggato è completamente compatibile con PDF/A-4. Abilita entrambi per documenti archivio + accessibili:
$pdf = Document::create()
->setTaggedPdf(true)
->setPdfA(true)
->setLanguage('en-US')
->setTitle('Accessible Archival Document')
->addPage()
->setFont('Helvetica', '', 12)
->openTag('H1')
->cell(0, 10, 'PDF/A-4 + PDF/UA Document', newLine: true)
->closeTag('H1')
->save('accessible-archival.pdf');