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とはなにか

『PDFインフラストラクチャ解説』のPDFの構造機能、タグ付きPDFの説明を強化。タグ付きPDFは固定レイアウトEPUBにも通じる。

『PDFインフラストラクチャ解説』を0.38版に改訂しました。

下記で公開しています。

PDF版
EPUB版

【追記:2016/1/21】
2016年1月に本書発売となり、無償配布を終了させていただきました。(『PDFインフラストラクチャ解説』POD版とKDP版が揃い踏みとなりました
【追記:ここまで】

今回の改訂箇所は次の節です。

9-2 PDFにおける構造表現
9-3 タグ付きPDF
14-3 透明テキスト付きPDF(新設)
22-2 PDF/A ファミリー
22-3 PDF/A-1
22-4 PDF/A-2
22-5 PDF/A-3
22-6 PDF/Aの作り方
22-7 スキャン画像からPDF/Aを作成する(新設)

スキャン画像を透明テキスト付きPDF、タグ付きPDF、PDF/Aにするための関連知識の説明を大幅に見直し・強化しました。

PDFにはXMLとは異なる方式の構造化の仕組みが用意されています。その仕組みは構造要素という辞書をツリー構造にするのですが、ツリー構造の中にはコンテンツ本体は含まれていなくて、他の構造要素またはコンテンツ項目へのIDが入っています。コンテンツ本体では、必要な箇所をマークオペレータで囲み、必要な箇所にはIDをつけます。コンテンツと構造のツリーはお互いをIDで関係付けるという仕組みです。

タグ付きPDFは、PDFに用意されている構造化の仕組みを使って実現するXHTMLのようなものと考えたら良いでしょう。
標準の要素型が規定されています。この要素型は簡単なXHTMLをそのままあらわすことができます。要素型には属性を着けることができますが、これは標準レイアウトを指定しています。

tag-example-xhtml
図1 簡単なXHTML

tag-example-pdf
図2 タグ付きPDFの構造ツリーと表示コンテンツのリンク

この仕組みを使うと、タグ付きPDFを使って、マルチレンディションのEUPBに似通った電子書籍を実現できそうです。