Автоматична PDF/UA структура от дървета на оформлението
THPDFDOMRenderer може да преобразува дървото на визуалното оформление в съответстващо дърво на логическата структура без ръчно разпределяне на MCID
THPDFDOMDocument.GenerateStructure по подразбиране е True, включва изход с етикетиран PDF, създава един корен Document и по един Sect за всеки раздел и използва THPDFDOMDocument.Language, когато целевият документ няма език
Семантични стойности по подразбиране и замествания
| Съдържание на оформлението | Генерирана структура |
|---|---|
THPDFDOMText | P или H1 до H6, когато е зададен HeadingLevel |
THPDFDOMStack и THPDFDOMContainer | Div |
THPDFDOMList | L с наследници LI, Lbl и LBody, както и ListNumbering |
THPDFDOMTable | Table, TR, TH и TD, с обхват на колоната в клетките за заглавия |
THPDFDOMImage | Figure с алтернативен текст |
| Горни и долни колонтитули, повтарящи се заглавия на таблици, разделители и декоративни полета | Маркирано съдържание Artifact |
Всеки компонент предоставя и SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText и Artifact за изричен контрол
Пример за достъпен документ
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);
Преди да запише невалидна структура, рендериращият механизъм отхвърля първо заглавие над H1, пропуснати нива на заглавия, несвързани роли на списък или таблица и PDF/UA фигура без алтернативен текст
Междустранична идентичност и ред за четене
Логическият компонент запазва един елемент на структурата, когато се разделя между страници
Всяко видимо продължение получава локален за страницата MCID и речник MCR, който насочва от съществуващия елемент на структурата към правилната страница
ParentTree на страницата съпоставя всеки MCID със същия елемент на структурата, а копията за продължение запазват логическата идентичност, без да копират изходния текст или редовете на таблицата
Повтарящите се заглавия на таблици на следващи страници са артефакти, така че визуалното им повторение да не пренарежда логическото заглавие на таблицата преди по-ранните редове с данни
API за директно авторство, безопасно при продължение
BeginTaggedContentForStructure разпределя MCID и отваря маркирано съдържание за вече съществуващ елемент на структурата
AppendStructureMarkedContent добавя изрично страница и MCID като MCR и актуализира ParentTree на страницата
Използвайте тези методи от по-ниско ниво, когато персонализиран рендериращ механизъм за оформление управлява логиката за продължение извън HPDFLayoutDOM
Статистика и съвместимост
THPDFDOMRenderStatistics отчита броя на елементите на структурата, маркираното съдържание и артефактите, наред със страниците, разполаганията, разделянията и дълбочината на продължението
Задайте GenerateStructure на False преди рендиране, когато е необходим нетагиран изход, съвместим на ниво байтове