Automatická štruktúra PDF/UA zo stromov rozloženia
THPDFDOMRenderer vie premeniť vizuálny strom rozloženia na zodpovedajúci logický štruktúrny strom bez manuálnej alokácie MCID
THPDFDOMDocument.GenerateStructure má predvolene hodnotu True, zapína tagovaný výstup PDF, vytvára jeden koreň Document a jeden Sect na sekciu a používa THPDFDOMDocument.Language, keď cieľ nemá jazyk dokumentu
Sémantické predvolené hodnoty a prepísania
| Obsah rozloženia | Vygenerovaná štruktúra |
|---|---|
THPDFDOMText | P alebo H1 až H6, keď je priradené HeadingLevel |
THPDFDOMStack a THPDFDOMContainer | Div |
THPDFDOMList | L s potomkami LI, Lbl a LBody plus ListNumbering |
THPDFDOMTable | Table, TR, TH a TD s rozsahom stĺpca na hlavičkových bunkách |
THPDFDOMImage | Figure s alternatívnym textom |
| Hlavičky, päty, opakované hlavičky tabuliek, medzery a dekoratívne rámčeky | Označený obsah Artifact |
Každý komponent tiež vystavuje SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText a Artifact na explicitnú kontrolu
Príklad prí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);
Section.Body.Add(THPDFDOMImage.Create(Bitmap, 120, 80,
'Revenue chart by quarter', 'Chart'));
PDF.PDFUACompliance := True;
PDF.PDFUAPart := 2;
Statistics := Renderer.Render(Document, PDF);
Vykresľovač odmietne prvý nadpis nad H1, preskočené úrovne nadpisov, osirotené role zoznamu alebo tabuľky a obrázok PDF/UA bez alternatívneho textu skôr, ako zapíše neplatnú štruktúru
Identita naprieč stránkami a poradie čítania
Logický komponent si zachováva jeden štruktúrny prvok, keď sa rozdelí naprieč stránkami
Každé viditeľné pokračovanie dostáva MCID lokálny pre stránku a slovník MCR, ktorý ukazuje z existujúceho štruktúrneho prvku na správnu stránku
ParentTree stránky mapuje každý MCID späť na ten istý štruktúrny prvok, zatiaľ čo klony pokračovania zachovávajú logickú identitu bez kopírovania zdrojového textu alebo riadkov tabuľky
Opakované hlavičky tabuliek na pokračovacích stránkach sú artefakty, takže ich vizuálne opakovanie nepreusporiada logickú hlavičku tabuľky pred skoršie riadky tela
Priame API na tvorbu bezpečnú pre pokračovanie
BeginTaggedContentForStructure alokuje MCID a otvára označený obsah pre štruktúrny prvok, ktorý už existuje
AppendStructureMarkedContent pripojí explicitnú stránku a MCID ako MCR a aktualizuje ParentTree stránky
Použite tieto nízkoúrovňové metódy, keď vlastný vykresľovač rozloženia vlastní logiku pokračovania mimo HPDFLayoutDOM
Štatistiky a kompatibilita
THPDFDOMRenderStatistics hlási počty štruktúrnych prvkov, označeného obsahu a artefaktov popri stránkach, umiestneniach, rozdeleniach a hĺbke pokračovania
Nastavte GenerateStructure na False pred vykresľovaním, keď sa vyžaduje bajtovo kompatibilný netagovaný výstup