bREADER の PDF リフロー表示機能が素晴らしい件

BB2C というiPhone用の2chビューワアプリがあるのですが、このアプリは2chビューワとしての評価が高いだけではなく、その凄まじく軽快な動作からiPhoneアプリ開発者で知らない人はモグリだと言われるくらいの良アプリなのです。 最近その作者のブログ に電子書籍の話題が出ていて気になっていたのですが、どうやら次は電子書籍リーダーアプリを開発していたらしい。それが bREADER

iPad を買って以来書籍はPDFにして読むのがメインになっていて、大体はi文庫HDで、検索が必要なときはiBooksかMac上で読んでます。

この環境におおむね満足しているのだけど、電車の中で座れなかったときに本を読もうと思っても iPad を出すのはきびしいし、かといって iPhone だと PDF を等倍表示ではきびしいものがある。(Retinaならよめないことはないけど…) 拡大したら拡大したで、1ページを読むのにページ内をぐるぐるスクロールしつつ読まなくてはいけなくなり大変苦痛である。 文字を拡大したぶんだけページがずれていってくれるePubや青空文庫みたいな形式でなければiPhoneではきびしいなーと思っていました。bREADERをしるまでは!

この問題はがんばって紙の書籍をスキャンしてPDF化している現状が問題であって、出版社がePubみたいなので最初から電子出版してくれれば解決なんだからそれまで待とう…。 と普通の人は考えます。bREADERの作者はそういう発想はないらしく、力技でこの問題を解決しようとしているようです。

詳しくは先ほどリンクしたブログを参照していただくとして、手持ちのPDFで試してみた結果を紹介します。

まずこれがPDFをそのまま表示した時。(iPhoneの画面だとわかりにくいのでわざとコントロールを表示した画面にしています)

bREADER 通常表示

iPhoneの普通のPDFリーダーはみんなこんな感じに表示されてしまいます。Retinaディスプレイを搭載したiPhone4でやっとよめるというくらいですが、それでも小さくてつらいです。 つぎに bREADER がうまいことやってくれたあとの画面を見てみましょう

bREADER リフロー表示

このようにまるでePubかと思うような拡大処理をしてくれてものすごく読みやすくなります。 そしてこのアプリの動作自体も BB2C を彷彿とさせる軽快さで、サクサク読み進められます。これはPDF化をがんばってる人でiPhoneのような小さいデバイスで本を読みたいと思っていた人には夢のようなアプリですね!

ただし現状ではPDFがそのまま自動で上のようなリフロー表示(というらしい)になってくれるわけではありません。ちょっとごにょっと作業をして上げる必要があります。

bREADER で PDF をリフロー表示に対応させる手順

リフロー表示を行うにはあらかじめMacかPCで書籍の文字情報を解析してメタ情報ファイルを作ってあげる必要があります。 作者がサイト上でそのためのbrcというツールを配布してくださっています。 が、そのツールはPDFに対応していませんのでまずはPDFをPNGとかなんか画像ファイルに変換してあげるという作業が必要になります。

  1. PDFを連番のPNG画像に変換
  2. brcでメタ情報ファイルを作成
  3. zipでかためてbREADERに転送

ってなかんじになります。

PDFを連番のPNG画像に変換

これをどうやろうかとおもいまして、最初に Preview.app を試してみたのですがどうも1ページずつしかPNGに保存できないっぽくあきらめ、OSX の機能をつかった pdf2png を適当にでっちあげた。

https://gist.github.com/850786

こいつを

$ gcc -framework Cocoa pdf2png.m -o pdf2png

とかでビルドしてあげて、

$ ./pdf2png foobar.pdf ./foobar

みたいにすると foobar.pdf を 0001.png みたいな連番の画像にして foobar ディレクトリに保存してくれると言う感じ。出力先のディレクトリはあらかじめ存在している必要があります。 PDFのスケーリングがよくわからなかったので適当に設定してあり、そこは誰か良い感じに書き直してくれればと…! あと CGBitmapContextCreate の第一引数にNULLをわたしていてそこが OS X 10.6 依存です。それ以前のでうごかしたいときは malloc(w*h*4) したの食わせとけばいいです。

brcでメタ情報ファイルを作成

先ほど生成した連番PNGが入っているディレクトリを brc コマンドに食わせる

$ brc ./foobar

これでそのディレクトリに d.brd というファイルが生成されていれば成功。

zipでかためてbREADERに転送

$ zip -0 foobar.zip *.png d.brd

みたいにして png と d.brd がふくまれた zip ファイルを作り、あとはそれを iTunes で bREADER のデーターフォルダに転送してあげればOK。簡単ですね。

まとめ

と、ここまで絶賛してきましたが現状では、ページ上部に常に出ている章の名前とか欄外に脚注なんかがあったりすると表示がおかしくなったりします。 とはいえそれでもiPhone上ではこの表示モードを使おうと言うくらいのレベルに既になっていると思います。これはほんとにすごい。

今後、bREADERもbrcも便利になっていくだろうし、brcはいらなくなる可能性もあるし、非常に楽しみですね!

bREADER 現バージョンの不満点をあげるとすればアプリ内に時計表示がどこにもなくアプリを落とさない限り時間がわからない、ということくらいでしょうか。 自炊派も、業者派も、iPhoneでPDF(書籍)を読む人すべてにおすすめなアプリです!

by typester / at 2011-03-02T19:17:00 / iphone / Comments(0)