レイアウトツリーからの自動 PDF/UA 構造
THPDFDOMRenderer は、手動の MCID 割り当てなしで視覚レイアウトツリーを対応する論理構造ツリーに変換できます
THPDFDOMDocument.GenerateStructure はデフォルトで True になり、タグ付き PDF 出力を有効にし、1 つの Document ルートとセクションごとに 1 つの Sect を作成し、ターゲットにドキュメント言語がない場合は THPDFDOMDocument.Language を使用します
セマンティックのデフォルトと上書き
| レイアウトコンテンツ | 生成される構造 |
|---|---|
THPDFDOMText | P、または HeadingLevel が割り当てられている場合は H1 から H6 |
THPDFDOMStack と THPDFDOMContainer | Div |
THPDFDOMList | 子孫 LI、Lbl、LBody と ListNumbering を伴う L |
THPDFDOMTable | ヘッダーセルに列スコープを持つ Table、TR、TH、TD |
THPDFDOMImage | 代替テキスト付きの Figure |
| ヘッダー、フッター、反復テーブルヘッダー、スペーサー、装飾ボックス | Artifact マーク付きコンテンツ |
すべてのコンポーネントは、明示的な制御のため SemanticRole、SemanticLanguage、AlternativeText、ActualText、ExpansionText、Artifact も公開します
アクセシブルなドキュメントの例
Document.Language := 'en-US';
Section := Document.AddSection;
Section.Header := THPDFDOMText.Create('Quarterly report');
Section.Body.AddHeading('Results', 1, 'Title');
List := THPDFDOMList.Create('Decimal', 'Steps');
List.AddItem('1.', 'Review the totals');
Section.Body.Add(List);
Table := THPDFDOMTable.Create('Summary');
Table.AddColumn;
Table.AddColumn;
Header := Table.AddRow(18, True);
Header[0].Text := 'Name';
Header[1].Text := 'Value';
Row := Table.AddRow(18);
Row[0].Text := 'Alpha';
Row[1].Text := '42';
Section.Body.Add(Table);
Section.Body.Add(THPDFDOMImage.Create(Bitmap, 120, 80,
'Revenue chart by quarter', 'Chart'));
PDF.PDFUACompliance := True;
PDF.PDFUAPart := 2;
Statistics := Renderer.Render(Document, PDF);
レンダラーは、無効な構造を書き込む前に、H1 を超える最初の見出し、スキップされた見出しレベル、孤立したリストまたはテーブルロール、代替テキストのない PDF/UA 図を拒否します
ページをまたぐ同一性と読み上げ順序
論理コンポーネントは、ページをまたいで分割されても 1 つの構造要素を保持します
各可視継続は、ページローカルの MCID と、既存の構造要素から正しいページを指す MCR 辞書を受け取ります
ページの ParentTree はすべての MCID を同じ構造要素にマッピングし直し、継続クローンはロジカルな同一性を保持しつつ、ソーステキストやテーブル行をコピーしません
継続ページの反復テーブルヘッダーはアーティファクトであるため、その視覚的な繰り返しによって論理テーブルヘッダーが前の本文行より先に並び替えられることはありません
直接的な継続安全オーサリング API
BeginTaggedContentForStructure は MCID を割り当て、既に存在する構造要素に対してマーク付きコンテンツを開きます
AppendStructureMarkedContent は、明示的なページと MCID を MCR として追加し、ページの ParentTree を更新します
カスタムレイアウトレンダラーが HPDFLayoutDOM の外側で継続ロジックを所有する場合は、これらの低レベルメソッドを使用してください
統計と互換性
THPDFDOMRenderStatistics は、ページ、配置、分割、継続深さとともに、構造要素、マーク付きコンテンツ、アーティファクトの数を報告します
バイト互換のタグなし出力が必要な場合は、レンダリング前に GenerateStructure を False に設定してください