Автоматична структура PDF/UA з дерев макета

THPDFDOMRenderer може перетворити візуальне дерево макета на відповідне логічне структурне дерево без ручного розподілення MCID

THPDFDOMDocument.GenerateStructure за замовчуванням має значення True, увімкнює вивід тегованого PDF, створює один корінь Document та один Sect на розділ і використовує THPDFDOMDocument.Language, коли в цільового елемента немає мови документа

Семантичні значення за замовчуванням і заміни

Вміст макетаЗгенерована структура
THPDFDOMTextP, або H1–H6, коли призначено HeadingLevel
THPDFDOMStack і THPDFDOMContainerDiv
THPDFDOMListL з нащадками LI, Lbl і LBody плюс ListNumbering
THPDFDOMTableTable, TR, TH і TD, зі сферою каталогу на комірках заголовків
THPDFDOMImageFigure з альтернативним текстом
Верхні та нижні колонтитули, повторювані заголовки таблиць, розділювачі та декоративні рамкиПозначений вміст 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 до рендерингу, коли потрібен байт-сумісний нетеджований вивід

Пов'язані API