Automatická struktura PDF/UA ze stromů rozvržení
THPDFDOMRenderer dokáže převést strom vizuálního rozvržení do odpovídajícího stromu logické struktury bez ručního přidělování MCID
THPDFDOMDocument.GenerateStructure je ve výchozím nastavení True, zapne výstup tagged PDF, vytvoří jeden kořen Document a jeden Sect pro každý oddíl a použije THPDFDOMDocument.Language, pokud cíl nemá jazyk dokumentu
Sémantické výchozí hodnoty a přepsání
| Obsah rozvržení | Vytvořená struktura |
|---|---|
THPDFDOMText | P nebo H1 až H6, pokud je přiřazeno HeadingLevel |
THPDFDOMStack a THPDFDOMContainer | Div |
THPDFDOMList | L s potomky LI, Lbl a LBody plus ListNumbering |
THPDFDOMTable | Table, TR, TH a TD se sloupcovým rozsahem v buňkách záhlaví |
THPDFDOMImage | Figure s alternativním textem |
| Záhlaví, zápatí, opakovaná záhlaví tabulek, mezery a dekorativní rámečky | Označený obsah Artifact |
Každá komponenta také zpřístupňuje SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText a Artifact pro výslovné řízení
Příklad přístupného dokumentu
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);
PDF.PDFUACompliance := True;
PDF.PDFUAPart := 2;
Statistics := Renderer.Render(Document, PDF);Vykreslovač před zápisem neplatné struktury odmítne první nadpis nad H1, přeskočené úrovně nadpisů, osiřelé role seznamu nebo tabulky a obrázek PDF/UA bez alternativního textu
Identita mezi stránkami a pořadí čtení
Logická komponenta zachová jeden prvek struktury i při rozdělení mezi stránky. Každé viditelné pokračování dostane lokální MCID stránky a slovník
MCR, který ukazuje ze stávajícího prvku struktury na správnou stránku
ParentTree stránky mapuje každý MCID zpět na stejný prvek struktury a klony pokračování zachovávají logickou identitu bez kopírování zdrojového textu nebo řádků tabulky
Rozhraní API pro pokračování
BeginTaggedContentForStructure přidělí MCID a otevře označený obsah pro již existující prvek struktury
AppendStructureMarkedContent přidá explicitní stránku a MCID jako MCR a aktualizuje ParentTree
ParentTree stránky
Statistiky a kompatibilita
THPDFDOMRenderStatistics uvádí počty prvků struktury, označeného obsahu a artefaktů vedle stránek, umístění, rozdělení a hloubky pokračování
Pokud je před vykreslením vyžadován binárně kompatibilní neoznačený výstup, nastavte GenerateStructure na False