OEM販売のご相談

Antenna House Formatter『Formatter』によるウェブコンテンツアクセシビリティガイドライン(WCAG 2.0) PDF実装方法

『Formatter』は XSL1.1標準仕様の FOプロパティと 『Formatter』独自の拡張を実装しており、『Formatter』が出力する PDF のアクセシビリティ機能を利用することが可能です。

"PDF Techniques for WCAG 2.0" は、W3C のワーキンググループの原稿であり "Web Content Accessibility Guidelines (WCAG) 2.0" の達成基準を満たしたいと考えるウェブコンテンツ制作者に情報を提供する文書です。日本語訳もあります("「WCAG 2.0 実装方法集」の「11. PDF(PDF)」")。原稿のテキストは、"Techniques for WCAG 2.0" からの抜粋です。

"PDF Techniques for WCAG 2.0" は Microsoft Word や Adobe Acrobat のようなアプリケーションを使ってアクセシブルな PDF を生成する方法を示しています。アンテナハウスのこのチュートリアルは同じ見出しを用いて(同じ順序で)、『Formatter』を使って同じ効果を得る方法を示しています。それぞれの見出しと、その見出しの後に加えた引用文は、関連する "PDF Techniques for WCAG 2.0"(日本語訳)からの抜粋です。引用文はそれぞれの実装方法を解釈する手助けとなるだろうと付け加えました。

ここに示されている 『Formatter』の実装方法はほとんどが PDF/UA、あるいはタグ付きPDFを「PDFオプション設定ファイルダイアログ」でチェックを入れて、または "-tpdf" をコマンドラインで指定して PDF/UA あるいはタグ付きPDF することが要件となっています。

PDF1: PDF 文書の Alt エントリによって画像に代替テキストを適用する

PDF 文書は、テキストに自然に変換されない画像、数式およびその他の項目について代替の説明を加えることで拡張される。実際に、アクセシビリティのためにはこのような代替テキストが必要になる。代替の説明は、人間が読み取ることができるテキストであり、視覚障害のあるユーザーのためにテキスト読み上げ技術によって音声化できる。

代替テキストは axf:alttext拡張プロパティで指定することができる。
 <fo:external-graphic src="..." axf:alttext="AltText"/>
CSS を組版する時は、-ah-alttext拡張プロパティか HTML の alt属性を使うことができる。

もし代替テキストがない場合は、『Formatter』はもしあれば roleプロパティの値を用いるか、代替テキストとしてシングルスペース文字(U+0020)を用いる。これにより、代替テキストが不必要だったとしても、アクセシビリティチェックによって代替テキストがないために起こるエラーを回避できる。必要な場所に代替テキストを置くのは義務付けられている。

PDF2: PDF 文書内でしおりを作成する

認知障害のあるユーザーは、多数のページを読み進めるよりも、文書の概要を提供する階層的なアウトラインを好む場合がある。また、これは文書内を移動する方法として一般的なものであり、どのようなユーザーにとっても役立つものである。

『Formatter』はしおり(Formatting Objects for Bookmarks)を生成するのに必要な "XSL 1.1標準仕様" の fo:bookmark-tree、fo:bookmark、fo:bookmark-titleを実装している。しかし、ひとつの FO から複数の PDF を生成したい時(多分冊PDF出力)、そして、それぞれの分冊にまったく同一かまたは別々のしおりを含めたい時は axf:outline-level を使う必要がある。この機能は、まだ標準の XSL 1.1 として定義されていなかった時に、『Formatter』が既に拡張プロパティとして実装したものである(しおりの作成)。

PDF3: PDF 文書で正しいタブ順序と読み上げ順序を確保する

画面を見ているユーザーにとっては、PDF コンテンツの論理的な順序は画面上の視覚的な順序でもある。キーボードおよび支援技術のユーザーの場合は、インタラクティブなエレメント(フォームフィールドおよびリンク)を含むコンテンツ内のタブの順序によって、ユーザーがコンテンツ内を移動できる順序が決定される。タブの順序には、文書の論理的な順序が反映されていなければならない。
論理構造は、文書がタグ付き PDF として保存されたときに作成される。PDF 文書の読み上げ順序は、インタラクティブなエレメントを含む、文書エレメントのタグ順序である。

『Formatter』でタグ付きPDFを生成する時、読み上げ順序は FO文書中の FO の出現順に従う。

PDF4: PDF 文書の Artifact タグによって装飾的な画像をタグ構造から削除する

PDF では、一般的にアーティファクトとは、作成されたコンテンツに含まれないグラフィックオブジェクトまたはその他のマーキングを意味する。アーティファクトの例としては、ページのヘッダまたはフッタ情報、ページのセクションを分ける線またはその他のグラフィック、装飾的な画像などがある。

fo:static-content は改行時に印を付け、fo:table-header(表の開始にあるものを除く)、fo:table-footer(表の終わりにあるものを除く)はすべて自動的に Artifact としてタグ付けされるので、読み上げ順の部分を形成しない。また、axf:pdftag="Artifact" とすることでどんな FO にも注釈を付けることができ、同様に読み上げ順から外すこともできる。

PDF5: PDF フォームで必須項目のフォーム・コントロールを特定する

この実装方法は、PDF フォームで入力する必要のあるフィールドが入力されていないことをユーザーに通知することを目的としている。必須フィールドは、フォームフィールドの辞書の /Ff エントリを使用して実装するPDF 1.7 (ISO 32000-1)の節 12.7「インタラクティブなフォーム」(英語)の表 220 を参照のこと)。これは通常、PDF のオーサリングツールを使用して行う。

『Formatter』が生成する PDF に axf:form拡張プロパティを使ってフォームを含めることができる(PDF出力におけるフォーム)。また、axf:field-flags拡張プロパティを使ってそれぞれのフォームフィールドに記入することもできる。

PDF6: PDF 文書でテーブルのマークアップにテーブルエレメントを使用する

表の情報は、ユーザーがテーブルを見られない場合や表示形式が変更された場合でも、情報内の関係を維持する方法で表示されなければならない。情報は、テキスト、数字、画像または他のデータ間の論理的な関係が 2 次元(垂直と水平)で存在する場合に表と見なされる。これらの関係は、列と行で表わされ、論理的な関係を把握するために列と行が認識可能である必要がある。

『Formatter』が出力するタグ付きPDF は、表関連の FO に正しい PDFタグを付けることができ、また CSS組版においても関連要素を用いて同様に可能である。

FO
FO要素 PDF要素
fo:table Table
fo:table-caption Caption
fo:table-header THead
fo:table-footer TFoot
fo:table-body TBody
fo:table-row TR
fo:table-cell TD

axf:pdftag を使って表の見出しにある fo:table-cell に TH としてタグ付けすることができる。

CSS
HTML要素 PDF要素
caption Caption
table Table
tr TR
td TD
th TH
thead THead
tfoot TFoot
tbody TBody

PDF7: スキャンされた PDF 文書で OCR を実行し、実際のテキストを生成する

テキストをスキャンした画像で構成される文書は、文書のコンテンツが画像であって検索可能なテキストではないので、本質的にアクセシブルではない。支援技術で語句を読み上げたり抽出したりすることはできない。ユーザーはテキストを選択、編集、サイズ変更またはリフローすることも、テキストや背景色を変更することもできない。作成者は PDF を操作してアクセシビリティを実現することができない。

これは 『Formatter』が FO文書から生成した PDF に直接適用されるわけではない。しかし、もし FO がテキストをスキャンした画像を取り込めば適用される。ラスタ画像をスキャンしたテキストを含めるひとつの方法としては、ラスタ画像をタグ付きPDF に変換、OCR を画像に適用、タグ付きPDF を FO から生成した PDF に埋め込む(PDFの埋め込み)。

PDF8: 構造エレメントの E エントリによって略語の定義を提供する

PDF 文書は、略語に対する拡張テキストを提供することで強化される。実際に、単語の判読が困難なユーザー、画面拡大表示(コンテキストが不明瞭になる)が必要なユーザー、記憶に障害があるユーザー、またはコンテンツによる理解が困難なユーザーが確実に理解できるようにするには、このようなアクセシビリティのための拡張が必要になる。

拡張テキストは axf:expansion-text拡張プロパティで指定することができる。

PDF9: PDF 文書内のコンテンツを見出しタグでマークアップすることによって見出しを作成する

見出しでコンテンツの重要なセクションの始まりが示されるので、支援技術のユーザーは見出しのリストにアクセスして、適切な見出しに直接ジャンプし、コンテンツを読み始めることができる。見出しでコンテンツを「ざっと読み」、興味のあるコンテンツに直接移動できるこの機能は、そうしなければコンテンツへのアクセスが遅くなってしまうユーザーにとって、操作が非常にスピードアップする。

『Formatter』は FO文書中のどの FO に対してもタグ付きPDF の見出し要素を自動的に生成しない。しかし、axf:pdftag を使えば適切な見出しのレベルを FO にタグ付けすることができる。
HTML を組版するときは、『Formatter』はタグ付きPDF の見出しレベルに対応して、HTML の見出し要素を自動的にタグ付けする。

HTML要素 PDF要素
h1 H1
h2 H2
h3 H3
h4 H4
h5 H5
h6 H6

PDF10:PDF 文書内のインタラクティブなフォーム・コントロールにラベルを付ける

フォーム・コントロールを使用すると、ユーザーは、情報を入力したり選択肢を指定したりして PDF 文書を操作してから、送信して処理することができる。支援技術のユーザーは、視力のあるユーザーと同様に、フォームフィールドを認識して理解し、選択を行い、フォームに入力し、フォームを送信できなければならない。フォームのアクセシビリティを確保するには、各フォーム・コントロールの目的を示す、理解可能なラベルが不可欠である。

上記ですでに述べたが、axf:form拡張を使って 『Formatter』が生成する PDF にフォームを含めることができる(PDF出力におけるフォーム)。
axf:field-description を使って個々のフォームフィールドに説明文を加えることも可能。

PDF11: PDF 文書内で /Link 構造エレメントを使用してリンクとリンクテキストを提供する

PDF 文書内のリンクは、そのサブツリー内のリンクタグおよびオブジェクトで表わされ、リンクオブジェクト参照(リンク注釈)と 1 つまたは複数のテキストオブジェクトで構成される。リンクタグ内のテキストオブジェクトまたはオブジェクトは、リンクの名前を提供するために支援技術で使用される。

『Formatter』は自動的に fo:basic-link をタグ付けし、あるいは CSS組版時には、タグ付きPDFの @リンクとしての href属性を持つ HTML の a要素をタグ付けする。

PDF12: PDF 文書内のフォームフィールドの名前、役割、値情報を提供する

名前、役割、状態および値情報をすべてのフォームコンポーネントに提供することにより、障害のある人が使用するスクリーンリーダー、画面拡大ソフトウェア、音声認識ソフトウェアなどの支援技術との互換を可能にする。

axf:form-field の拡張プロパティを使って生成可能(フォームフィールド)。

PDF13: PDF 文書内のリンクに対して /Alt エントリを使用して代替テキストを提供する

PDF 文書内のリンクは、そのサブツリー内のリンクタグおよびオブジェクトで表わされ、リンクオブジェクト参照(リンク注釈)と 1 つまたは複数のテキストオブジェクトで構成される。リンクタグ内のテキストオブジェクトまたはオブジェクトは、リンクの名前を提供するために支援技術で使用される。
コンテンツ制作者は、リンクタグに対して /Alt エントリを提供することにより、デフォルトリンクテキストを置き換えることができる。リンクタグに /Alt エントリがある場合、スクリーンリーダーはリンクタグ内の視覚的テキストオブジェクトの値を無視し、リンクテキストに /Alt エントリ値を使用する。

fo:basic-link に axf:annotation-contents を使うことで実現できる。

PDF14: PDF 文書内に連続するヘッダとフッタを提供する

連続するヘッダとフッタは、一貫性のある予測可能な方法で繰り返される情報を提供することにより、コンテンツの利用と理解を容易にするために役立つ。ヘッダとフッタのコンテンツは、文書の範囲と内容、対象読者および設計上の決定によって大きく異なる。

連続するヘッダとフッタは fo:static-content を使って実装可能である。

PDF15: PDF フォームで送信フォームアクションのある送信ボタンを提供する

この実装方法の目的は、PDF フォームの送信フォームアクションを使用して、ユーザーが明示的に文脈の変更を要求できるメカニズムを提供することがある。

送信ボタンは PDF のフォームアクション機能を使って提供が可能である。

PDF16: PDF 文書の文書カタログ内の /Lang エントリを使用してデフォルト言語を設定する

支援技術と従来のユーザーエージェントはどちらも、文書の言語が指定されている場合に、より正確にテキストを表現できる。スクリーンリーダーは正しい発音規則をロードできる。視覚的なブラウザは文字やスクリプトを正しく表示できる。メディアプレイヤーはキャプションを正しく表示できる。このため、障害のあるユーザーにとってコンテンツが分かりやすくなる。

fo:root に xml:lang プロパティを指定することで、デフォルト言語の指定は可能である。

PDF17: PDF 文書に一貫性のあるページ番号を指定する

多くの文書では、文書内で特定のページ番号形式を使用する。一般に、前付けは小文字のローマ数字で番号付けされる。1 というページ番号で始まる主要コンテンツは、実際は文書の 5 ページ目または 6 ページ目である場合がある。同様に、付録はページ番号 1 で始まり、付録という英単語の接頭語が付けられる(例えば、「A-1」)。
コンテンツ制作者は、変換された文書のページ番号付けが、ユーザーエージェントで表示されるページ番号に反映されていることを確認する必要がある。文書のページ番号表示の一貫性は、文書内の移動をより予測可能で分かりやすいものにするのに役立つ。

fo:page-number と関連するプロパティを使うことで、一貫性のあるページ番号を振ることができる。

PDF18: PDF 文書の文書情報辞書内の Title エントリを使用して文書のタイトルを指定する

文書のタイトルは、ユーザーがページの内容を読んだり解釈したりせずに現在位置を特定できるようにする。ユーザーエージェントはページのタイトルを利用しやすくして、ユーザーがページを確認できるようにする。例えば、ユーザーエージェントは、ウィンドウのタイトルバー内に、またはページを含むタブの名前としてページのタイトルを表示できる。

fo:title を使うことで PDF にタイトルを付けることが可能。代わりに、
 <axf:document-info name="document-title" value="The document title" />
を使うことも可能である。
HTML 組版時、<title> を使うか、あるいは
 <meta name="document-title" content="The document title"/>
と指定して、すでに存在する <title> をオーバーライドすることができる。

PDF19: PDF 文書内で Lang エントリを使用して節や句の言語を指定する

支援技術と従来のユーザーエージェントはどちらも、言語が指定されている場合に、より正確にテキストを表現できる。スクリーンリーダーは正しい発音規則を用いることができる。 それにより、障害のあるユーザーにとってコンテンツがより理解しやすくなる。

どの FO にも xml:langプロパティを使って指定が可能である。

PDF20: Adobe Acrobat Pro のテーブルエディタを使用して、間違ってタグ付けされているテーブルを修復する

『Formatter』に該当しない。

PDF21: PDF 文書のリストにリストタグを使用する

マークアップを使用して項目を視覚的にリストであるかのように書式設定したときに、リストの関係性が示されない場合は、情報間の移動が難しくなることがある。このような視覚的な書式設定の簡単な例としては、改行を使用したリスト項目の分割がある。

『Formatter』が生成するタグ付きPDF はリスト関連の FO に、あるいは CSS組版時にはリスト関連のエレメントに、正しい PDFタグ付けが行われる。

FO
FO要素 PDF要素
fo:list-block L
fo:list-item LI
fo:list-item-label Lbl
fo:list-item-body Lbody
CSS
HTML要素 PDF要素 コメント
ul L
ol L
li LI
li::marker LBL list label
dl L
dt LBL
dd LBody

PDF22:ユーザーの入力が PDF フォーム内の必須形式または必須値の範囲外になる場合を指定する

ユーザーが必ずエラーが発生したことに気付き、何が間違っているのかを判断し、修正できるようにすることは、ソフトウェアのユーザビリティとアクセシビリティにとって重要である。この目的を達成することは、すべてのユーザーが簡単かつ確実にフォームベースのトランザクションを完了できるようにするのに役立つ。

フィールド形式のカテゴリと個々のフォームフィールドのフィールド形式を axf:field-Format-category拡張機能と axf:field-format拡張機能をそれぞれ使うことで実現可能である。

PDF23:PDF 文書内でインタラクティブなフォーム・コントロールを提供する

フォーム・コントロールを使用すると、ユーザーは、情報を入力したり選択肢を指定したりして PDF 文書を操作してから、送信して処理することができる。キーボードアクセスに依存しているユーザーは、視力のあるユーザーと同様に、フォームフィールドを認識して理解し、選択を行い、フォームに入力し、フォームを送信できなければならない。

axf:field-type拡張機能を使って、個々のフォームフィールドの型を指定することが可能である。