Логическа структура
Логическа структура
Тагираните 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 структурата:
- Block-level: Параграф, Заглавие (H1-H6), Списък, Елемент от списъка, Таблица, Цитат, Код
- Inline: Span, Връзка, Анотация, Фигура, Формула
- Grouping: Раздел, Статия, Секция, Част
Съвети и най‑добри практики
- Винаги задавайте
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 |
FAQ
Какво е маркиран 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 | Прикачване на изображение към илюстрацията |