Struttura PDF/UA Automatica dagli Alberi di Layout

THPDFDOMRenderer può trasformare l'albero di layout visivo in un albero di struttura logica corrispondente senza allocazione manuale degli MCID

THPDFDOMDocument.GenerateStructure ha come predefinito True, abilita l'output PDF taggato, crea una radice Document e un Sect per sezione e usa THPDFDOMDocument.Language quando il documento di destinazione non ha una lingua

Predefiniti e override semantici

Contenuto di layoutStruttura generata
THPDFDOMTextP, o H1 fino a H6 quando viene assegnato HeadingLevel
THPDFDOMStack e THPDFDOMContainerDiv
THPDFDOMListL con discendenti LI, Lbl e LBody più ListNumbering
THPDFDOMTableTable, TR, TH e TD, con ambito di colonna sulle celle di intestazione
THPDFDOMImageFigure con testo alternativo
Intestazioni, piè di pagina, intestazioni di tabella ripetute, spaziatori e caselle decorativeContenuto marcato Artifact

Ogni componente espone anche SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText e Artifact per un controllo esplicito

Esempio di documento accessibile

Document.Language := 'en-US';
Section := Document.AddSection;
Section.Header := THPDFDOMText.Create('Quarterly report');
Section.Body.AddHeading('Results', 1, 'Title');

List := THPDFDOMList.Create('Decimal', 'Steps');
List.AddItem('1.', 'Review the totals');
Section.Body.Add(List);

Table := THPDFDOMTable.Create('Summary');
Table.AddColumn;
Table.AddColumn;
Header := Table.AddRow(18, True);
Header[0].Text := 'Name';
Header[1].Text := 'Value';
Row := Table.AddRow(18);
Row[0].Text := 'Alpha';
Row[1].Text := '42';
Section.Body.Add(Table);

Section.Body.Add(THPDFDOMImage.Create(Bitmap, 120, 80,
  'Revenue chart by quarter', 'Chart'));

PDF.PDFUACompliance := True;
PDF.PDFUAPart := 2;
Statistics := Renderer.Render(Document, PDF);

Il renderer rifiuta una prima intestazione sopra H1, livelli di intestazione saltati, ruoli orfani di elenco o tabella e una figura PDF/UA senza testo alternativo prima di scrivere una struttura non valida

Identità tra pagine e ordine di lettura

Un componente logico mantiene un solo elemento di struttura quando si divide tra più pagine

Ogni continuazione visibile riceve un MCID locale alla pagina e un dizionario MCR che punta dall'elemento di struttura esistente alla pagina corretta

Il ParentTree della pagina mappa ogni MCID di nuovo allo stesso elemento di struttura, mentre i cloni di continuazione preservano l'identità logica senza copiare il testo sorgente o le righe della tabella

Le intestazioni di tabella ripetute sulle pagine di continuazione sono artefatti, così che la loro ripetizione visiva non riordini l'intestazione logica della tabella davanti alle righe del corpo precedenti

API di authoring dirette sicure per la continuazione

BeginTaggedContentForStructure alloca un MCID e apre il contenuto marcato per un elemento di struttura già esistente

AppendStructureMarkedContent aggiunge una pagina e un MCID espliciti come MCR e aggiorna il ParentTree della pagina

Usare questi metodi di basso livello quando un renderer di layout personalizzato possiede la logica di continuazione al di fuori di HPDFLayoutDOM

Statistiche e compatibilità

THPDFDOMRenderStatistics riporta i conteggi di elementi di struttura, contenuto marcato e artefatti insieme a pagine, posizionamenti, suddivisioni e profondità di continuazione

Impostare GenerateStructure su False prima del rendering quando è richiesto un output non taggato compatibile a livello di byte

API correlate