Логическая структура

Логическая структура

Логическая структура

Тегированные PDF включают логическое дерево структуры, определяющее семантическую иерархию документа — абзацы, заголовки, таблицы, рисунки и списки. Aspose.PDF FOSS for .NET предоставляет API TaggedContent для построения и проверки этой структуры, что является необходимым для соответствия требованиям доступности 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:

  • Block-level: Параграф, Заголовок (H1-H6), Список, Элемент списка, Таблица, Цитата, Код
  • Inline: Спан, Ссылка, Аннотация, Рисунок, Формула
  • Grouping: Деление, Статья, Раздел, Часть

Советы и лучшие практики

  • Всегда устанавливайте Title и Language на TaggedContent для соответствия PDF/UA.
  • Стройте дерево структуры сверху вниз: создавайте элементы, затем добавляйте дочерние.
  • Используйте SetAlternativeText на элементах figure для доступности скрин‑ридеров.
  • Помечайте таблицы с помощью THead, TBody, TFoot для правильной семантики таблиц.
  • Проверяйте соответствие PDF/UA с помощью PdfFormatConversionOptions (см. руководство по конвертации).

Общие проблемы

ПроблемаПричинаРешение
Ошибка проверки PDF/UAВ дереве структуры отсутствуют обязательные элементыУбедитесь, что весь контент имеет соответствующие структурные элементы
Порядок заголовков неверенH2 появляется перед H1Следуйте последовательной иерархии заголовков
У изображения нет альтернативного текстаSetAlternativeText не вызванВсегда предоставляйте альтернативный текст для иллюстраций
Таблица не распознаётся программой чтения с экранаОтсутствует структура THead/TBodyИспользуйте полный 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Прикрепить изображение к иллюстрации

См. также

 Русский