PDFのリフロー表示。タグ付きPDFとタグの付いていないPDFの比較。

PDFの表示はデフォルトではページ単位のレイアウト状態ですが、リフロー表示もできます。

○Adobe Readerでリフロー表示するには: 「表示」→「ズーム」→「折り返し」

また、PDFにはタグ付きPDFという仕様があります(ISO 32000-1:2008の14.8節)。タグ付きPDFは、構造情報を表すための標準のタグ(XHTMLの要素に相当)を定めるものです。

タグは、グループ化要素、ブロックレベル要素、インライン・レベル要素、イラスト要素に分類されており、次のようなタグを決めています。

1)グループ化要素
Document, Part, Art, Sect, Div, BlockQuote, Caption, TOC, TOCI, Index, NonStruc, Privateがある。PDFが完全な文書を含むならばStrucTreeRootは、唯一のDocumentを含む。部分的な整合文書を含むなら、 Part, Art, Sectを代わりに使っても良い。
2)ブロックレベル要素
段落など(P, H, H1, H2, H3, H4, H5, H6)、リスト(L, LI, Lbl, LBody)、表(Table, TR, TH, TD, THead, TBody, TFoot)
3)インラインレベル構造
Span, Quote, Note, Reference, BibEntry, Code, Link, Annot, Ruby, RB, RT, RP, Warichu, WT, WP
4)イラスト要素
Figure, Formula, Form

タグ付けPDFにするメリットの一つにリフロー表示が正確にできる、ということがあります。これを実際に試してみたのが、次の図です。2段組のPDF(上)をリフロー表示させた状態です。タグ付きPDFでは下左のようになります。下右はタグのついていないPDFの場合です。PDFの印刷レイアウト表示は同じですが、リフロー表示は異なり、タグ付きPDFではリフロー表示でも表が正しく表示されていることがわかります。

reflow
図1 2段組のPDF(上)のリフロー表示

Adobe Acrobatを使うとタグを表示できます。次の図はタグ付きPDFのタグを表示したものです。

tag-yes-reflow
図2 タグ付きPDFのタグを表示(Acrobat XI)

このあたりまでは知っていたのですが、先日、タグの付いていないPDFをリフロー表示させるとタグを表示するペインにタグが現れることに気がつきました。図3はタグの付いていないPDFをリフロー表示させた状態です。この場合、すべてのブロックにPタグを生成しているようです。

tag-non-reflow
図3 タグの付いていないPDFをリフローしタグを表示(Acrobat XI)

どうやら、Adobe Readerは簡単なブラウザのようなレンダラを内蔵しており、それを使ってリフロー表示しているようです。タグ付きPDFはタグを使って各タグのデフォルトレイアウトで表示します。タグ付きでないときはタグを推定して割り当てているものと思います。

タグ付きPDFではタグのデフォルト表示が決まっていますが、簡単なレイアウト指定もできます。レイアウト属性はCSSとかXSL-FOのようなプロパティを使って指定するようです。

ちなみに、上のPDFは、AH CSS Formatter V6.2で作成しました。

AH CSS Formatter

■参考資料
AH Formatter
AH Formatter によるウェブコンテンツアクセシビリティガイドライン(WCAG 2.0) PDF実装方法
PDF/Aとはなにか