« October 2013 | Main | February 2015 »

June 26, 2014

ChainLPでKindle Paperwhite用mobiファイルを作る時のTips

最近は通勤の電車の中で、e-ink系の読書端末を使っている人をよく見かけるようになりました。Librieが出たころと比べると本当に隔世の感ですね(といっても、ほんの10年前なのですが)。

とはいえ、私の一押しのPRS-T3を見かけることは少なく、やはりKindle Paperwhiteが(あとKoboも?)多いような気がします。

Kindle Paperwhiteは外部メモリが使えないので、自炊本をたくさん持ち歩くのには向いていませんが、クラウドに保存しておいて必要に応じて入れ替える、という運用なら良いかもしれません。

ということで、Kindle Paperwhite用に自炊本を作ることを考えます。

ツールはChainLPが一番と思います。フォーマットはpdfにする人が多いと思いますが、私は個人的な好みでmobiにしています。(KindleのPDF表示機能が今ひとつ気に入らないので)

さて、ここで問題なのは、ChainLPで章のタイトルなどを設定しても、mobiファイルにしたときはそれが反映されない、ということです。pdfやepubではきちんと機能して目的の場所にジャンプできるようになるのですが。

これはmobiファイルの制約なのだとばかり思っていたのですが、最近になって対策の方法がわかりましたので書いておきます。

1) まず、Kindle Paperwhiteの解像度に設定した上で、epubファイルを出力します。
2) epubファイルは実体はzipファイルですので、適当なツールで中からmetadata.opfというファイルを取り出します。
3) このmetadata.opfの中の
<spine page-progression-direction="rtl">
という行を
<spine toc="ncx" page-progression-direction="rtl">
に書き替えます。
4) metadata.opfをepubファイルの中に戻します。
5) このepubファイルをKindleGenでmobiファイルに変換します。

実は、epubに格納されているtoc.ncxというファイルに目次情報が書かれているのですが、このファイルがtoc (table of contents)であることが明示されていないために、KindleGenがこのファイルを無視してしまうようなのです。(epubの場合は、デフォルトでtoc.ncxという名前のファイルを参照するようです)

以上の手順に加えてkindlestrip.pyでファイルサイズを削減することも含めたシェルスクリプトを添付しておきます(cygwin上で動かすことを想定)。各自の環境に合わせて調整する必要がありますが、ご参考までに。

add_toc.shをダウンロード

| TrackBack (0)

« October 2013 | Main | February 2015 »