Логічна структура
Логічна структура
Теговані PDF включають логічне дерево структури, яке визначає семантичну ієрархію документа — абзаци, заголовки, таблиці, рисунки та списки. Aspose.PDF FOSS for .NET надає TaggedContent API для створення та інспекції цієї структури, що є важливим для відповідності доступності PDF/UA.
Доступ до позначеного вмісту
using var doc = new Document();
var tagged = doc.TaggedContent;
tagged.SetTitle("Accessible Document");
tagged.SetLanguage("en-US");Створення елементів структури
ITaggedContent надає фабричні методи для кожного стандартного типу елементу структури. Елементи збираються в дерево шляхом виклику AppendChild.
var root = tagged.RootElement;
var heading = tagged.CreateHeaderElement(1);
heading.SetText("Chapter 1");
root.AppendChild(heading);
var paragraph = tagged.CreateParagraphElement();
paragraph.SetText("This is the first paragraph.");
root.AppendChild(paragraph);Структуровані таблиці
TableElement створює доступні таблиці з розділами head, body та footer.
var table = tagged.CreateTableElement();
root.AppendChild(table);
var thead = table.CreateTHead();
var headerRow = thead.CreateTR();
headerRow.CreateTH().SetText("Name");
headerRow.CreateTH().SetText("Value");
var tbody = table.CreateTBody();
var dataRow = tbody.CreateTR();
dataRow.CreateTD().SetText("Width");
dataRow.CreateTD().SetText("612");Ілюстрації та схеми
IllustrationElement обгортає зображення у дереві структури.
var figure = tagged.CreateFigureElement();
figure.SetImage("chart.png");
figure.SetAlternativeText("Sales chart for Q4");
root.AppendChild(figure);Типи елементів структури
API підтримує повний набір типів елементів структури PDF:
- Блочний рівень: Paragraph, Heading (H1-H6), List, ListItem, Table, BlockQuote, Code
- Вбудований: Span, Link, Annotation, Figure, Formula
- Групування: Division, Article, Section, Part
Поради та найкращі практики
- Завжди встановлюйте
TitleіLanguageнаTaggedContentдля відповідності PDF/UA. - Будуйте дерево структури зверху вниз: створюйте елементи, а потім додавайте дочірні.
- Використовуйте
SetAlternativeTextу елементах figure для доступності скрінрідера. - Позначайте таблиці за допомогою
THead,TBody,TFootдля правильної семантики таблиць. - Перевіряйте відповідність PDF/UA за допомогою
PdfFormatConversionOptions(див. посібник з конвертації).
Поширені проблеми
| Issue | Cause | Fix |
|---|---|---|
| PDF/UA validation fails | Structure tree missing required elements | Ensure all content has corresponding structure elements |
| Heading order is wrong | H2 appears before H1 | Follow sequential heading hierarchy |
| Figure has no alt text | SetAlternativeText not called | Always provide alt text for illustrations |
| Table not recognized by screen reader | Missing THead/TBody structure | Use the full table structure API |
ЧаПи
Що таке тегований PDF?
Тегований PDF містить логічне дерево структури, яке відображає візуальний вміст у семантичні елементи (заголовки, абзаци, таблиці), забезпечуючи інструменти доступності та переформатування вмісту.
Чи тегований PDF є тим самим, що PDF/UA?
PDF/UA — це стандарт, який вимагає тегування та додаткових правил доступності.
Теговані PDF є передумовою для відповідності PDF/UA.
Чи можу я додати теги до існуючого PDF?
API TaggedContent працює найкраще з документами, створеними з нуля. Для існуючих PDF‑файлів перегляньте дерево структури за допомогою Document.TaggedContent.
Зведення довідки API
| Клас / Метод | Опис |
|---|---|
TaggedContent | Точка входу для операцій логічної структури |
TaggedContent.SetTitle | Встановити заголовок документа для доступності |
TaggedContent.SetLanguage | Встановити мову документа |
ITaggedContent | Інтерфейс з фабричними методами для всіх типів елементів |
StructureElement | Базовий клас для всіх елементів структури |
StructureElement.AppendChild | Додати дочірній елемент до дерева |
StructureElement.SetText | Встановити текстовий вміст елемента |
TableElement | Елемент структури таблиці з підтримкою доступності |
TableElement.CreateTHead | Створити розділ заголовка таблиці |
TableElement.CreateTBody | Створити розділ тіла таблиці |
TableTRElement | Елемент рядка таблиці |
TableTRElement.CreateTD | Додати клітинку даних |
TableTRElement.CreateTH | Додати клітинку заголовка |
IllustrationElement | Елемент структури рисунка/ілюстрації |
IllustrationElement.SetImage | Прикріпити зображення до ілюстрації |