論理構造
論理構造
タグ付けされた 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 準拠にします。 - 構造ツリーは上から下へ構築します:要素を作成し、次に子要素を追加します。
- 画面リーダーのアクセシビリティのため、figure 要素に
SetAlternativeTextを使用します。 - テーブルには適切なテーブルセマンティクスのために
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にタグ付けできますか?
TaggedContent API は、最初から作成したドキュメントで最も効果的に機能します。既存の 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 | イラストに画像を添付 |