2013年2月8日金曜日

Macでdjvuファイルのしおりの編集

djvuは画像圧縮方式であり、その圧縮方式を用いた文書形式のことです。djvu方式はスキャンした文書の圧縮に特化されていて、pdfと比べて同程度の解像度に見えるファイルでもファイルサイズがかなり小さくてすむことが特徴です。

最近、TrevesのTopological Vector Spaces, Dstributions and KernelsのDover版が出ていたので購入して読んでいたのですが、やはり英語は疲れるので訳書の「位相ベクトル空間・超関数・核」を購入して読み進めています。大昔に70ページ程読んで挫折した経験があり、今は過去に作ったノートを参考に50ページあたりまで読み進めてきました。

このトレーブの本を自炊してpdf化したのですが、上巻で50MB程あり、iPadで読むにも動作がもっさりしているのでdjvu文書に変換してみました。djvudigitalコマンドを使ってみると若干視認性は落ちたものの、サイズは13MBほどになりました。

pdfファイルをdjvuファイル化するには、他にpdf2djvuを使う方法もありますが、こちらはファイルサイズの低下があまり大きくないので見送りました。

pdf2djvuではpdfファイルのしおりが引き継がれますが、djvudigitalではしおりが引き継がれません。UbuntuではdjvusmoothというGUIでしおりが編集出来るソフトがあるのですが、macportsにはこれがなく、自分でビルドすることも出来なかったので別の方法を探していました。

結果的に、djvulibreのコマンドラインツール群に含まれているdjvusedを使えばしおりを付け加えることが出来ました。具体的には、例えばbookmarks.txtというテキストファイルに以下の形式でしおりの内容を保存しておきます。

(bookmarks
("Title" "#1")
("My Chapter 1" "#5"
("Sub Chapter 1" "#5")
("Sub Chapter 2" "#15"))
)

次にターミナルで

djvused file.djvu -e 'set-outline bookmarks.txt' -s
と打てば、file.djvuというdjvuファイルにしおりが追加されます。しおりは元のファイルのものを上書きしてしまうので注意が必要です。ファイルからしおりを抜き出すには
djvused file.djvu -e print-outline file.djvu > output.txt
とします。これでfile.djvuのしおりがoutput.txtというテキストファイルに書き出されます。

他にも、djvuファイルの特定のページを削除したければdjvmコマンドを使って
djvm -d file.djvu 1
のように、djvm -d [filename] [pagenumber]のような記述をすればよいようです。