Struktura logiczna
Struktura logiczna
Pliki PDF z tagami zawierają logiczne drzewo struktury, które definiuje semantyczną hierarchię dokumentu — akapity, nagłówki, tabele, rysunki i listy. Aspose.PDF FOSS for .NET udostępnia TaggedContent API do budowania i inspekcji tej struktury, co jest niezbędne dla zgodności z dostępnością PDF/UA.
Uzyskiwanie dostępu do oznaczonej treści
using var doc = new Document();
var tagged = doc.TaggedContent;
tagged.SetTitle("Accessible Document");
tagged.SetLanguage("en-US");Tworzenie elementów struktury
ITaggedContent udostępnia metody fabryczne dla każdego standardowego typu elementu struktury. Elementy są składane w drzewo poprzez wywołanie 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);Strukturalne tabele
TableElement tworzy dostępne tabele z sekcjami nagłówka, ciała i stopki.
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");Ilustracje i rysunki
IllustrationElement opakowuje obrazy w drzewie struktury.
var figure = tagged.CreateFigureElement();
figure.SetImage("chart.png");
figure.SetAlternativeText("Sales chart for Q4");
root.AppendChild(figure);Typy elementów struktury
API obsługuje pełny zestaw typów elementów struktury PDF:
- Block-level: Akapit, Nagłówek (H1-H6), Lista, Element listy, Tabela, Cytat blokowy, Kod
- Inline: Fragment, Odnośnik, Adnotacja, Rysunek, Formuła
- Grouping: Podział, Artykuł, Sekcja, Część
Wskazówki i najlepsze praktyki
- Zawsze ustaw
TitleiLanguagenaTaggedContentdla zgodności z PDF/UA. - Buduj drzewo struktury od góry do dołu: twórz elementy, a następnie dodawaj dzieci.
- Użyj
SetAlternativeTextna elementach figure, aby zapewnić dostępność dla czytników ekranu. - Oznacz tabele przy użyciu
THead,TBody,TFoot, aby zapewnić prawidłową semantykę tabel. - Sprawdź zgodność z PDF/UA przy użyciu
PdfFormatConversionOptions(zobacz przewodnik konwersji).
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| Walidacja PDF/UA nie powiodła się | Drzewo struktury nie zawiera wymaganych elementów | Upewnij się, że cała zawartość ma odpowiadające elementy struktury |
| Kolejność nagłówków jest nieprawidłowa | H2 pojawia się przed H1 | Stosuj kolejność hierarchii nagłówków |
| Rysunek nie ma tekstu alternatywnego | SetAlternativeText nie wywołano | Zawsze podawaj tekst alternatywny dla ilustracji |
| Tabela nie jest rozpoznawana przez czytnik ekranu | Brak struktury THead/TBody | Użyj pełnego API struktury tabeli |
Najczęściej zadawane pytania
Czym jest oznaczony PDF?
PDF z tagami zawiera logiczne drzewo struktury, które mapuje treść wizualną na elementy semantyczne (nagłówki, akapity, tabele), umożliwiając narzędzia dostępności i przepływ treści.
Czy PDF z tagami jest tym samym co PDF/UA?
PDF/UA jest standardem, który wymaga tagowania oraz dodatkowych zasad dostępności.
Tagged PDFs są warunkiem wstępnym zgodności z PDF/UA.
Czy mogę otagować istniejący PDF?
API TaggedContent działa najlepiej z dokumentami tworzonymi od podstaw. Dla istniejących plików PDF, sprawdź drzewo struktury za pomocą Document.TaggedContent.
Podsumowanie referencji API
| Klasa / Metoda | Opis |
|---|---|
TaggedContent | Punkt wejścia dla operacji struktury logicznej |
TaggedContent.SetTitle | Ustaw tytuł dokumentu dla dostępności |
TaggedContent.SetLanguage | Ustaw język dokumentu |
ITaggedContent | Interfejs z metodami fabryki dla wszystkich typów elementów |
StructureElement | Klasa bazowa dla wszystkich elementów struktury |
StructureElement.AppendChild | Dodaj element potomny do drzewa |
StructureElement.SetText | Ustaw zawartość tekstową elementu |
TableElement | Element struktury tabeli dostępnej |
TableElement.CreateTHead | Utwórz sekcję nagłówka tabeli |
TableElement.CreateTBody | Utwórz sekcję ciała tabeli |
TableTRElement | Element wiersza tabeli |
TableTRElement.CreateTD | Dodaj komórkę danych |
TableTRElement.CreateTH | Dodaj komórkę nagłówka |
IllustrationElement | Element struktury rysunku/ilustracji |
IllustrationElement.SetImage | Dołącz obraz do ilustracji |