Kobo gloと自炊PDFファイル Macで変換するには

昨年Kindle4を買いましたが、その後電子書籍の便利さに魅せられて自分で持っている本をほとんど電子化してしまいました。Macを使っているのでScanSnap S1500Mというのを買ってプログラミング関連の分厚い本とか、漫画とかを片っ端からいわゆる「自炊」しました。あとから画質を良くすることは出来ないので、全て300DPIで取り込んであります。iPadのRetina Displayで読むと、ほとんど紙の本と変わりません。

iPad(3)では容量と処理速度にさほど問題ありませんが、Kindleに自炊したPDFを転送すると、周囲に変な余白ができるのと、Kindle自体の容量がすくなくてSDカードなども入りませんし画質が悪く可読性も低くなります。速度もネックになるのでこんなものかなと思っていました。

というところに最近Kobo gloが発売され、処理速度・解像度がアップしていること、なによりmicroSDカードが使えることから購入してみました。

PDFを表示させると処理速度に不満があるのと、画像の縮小アルゴリズムが良くないのかあまり見栄えがよくありません。色々調べてみると、ChainLPというソフトで加工するといいらしい・・・と言ってもこれはWindows用しかないようです。いろんなことがOSXでできるようになっていますがこういうことは久しぶりです。

やることは、

  1. すでにあるPDFファイルから画像ファイルを抽出する
  2. 解像度を変更する :758×1024 がよいらしい。
  3. 解像度を変更したjpegファイルをZIP圧縮して、CBZという拡張子にする

ということですが、どうしたものかな・・・と考えてみたところ、自分でChainLPのようなソフトを書いてもいいのかもしれませんがオープンソースのコマンドラインツールで何とかならないかと思いつきました。

PDFからの画像抽出は、popplerというパッケージ(プログラム群?ライブラリ?)にふくまれているpdfimagesというのが使えそうです。

解像度の変更はImageMagickというパッケージ(同上)ふくまれているmogrifyというのでなんとかします。ついでにKobo gloの画面は白っぽいのでガンマ値の変更などもここで行います。ImageMagickはそういえば10年ほど前に大学院生の時に使ったことがありました。この程度の処理に使うのがもったいないくらい高機能なパッケージです。

これらをインストールするには、オープンソースソフトウェアの作法に従ってソースをダウンロードして自分でコンパイルすることになります。tar.gzファイルをダウンロードして

./configure
make install

すればいいようになっています・・・と思ったらライブラリの依存関係が。しばらく自分で何とかしようと思いましたがやはりこれは無理で、MacPortsのお世話になることにしました。MacPortsをインストールして、

sudo port install poppler
sudo port install ImageMagick

とするだけです。・・・色々使わないものもインストールされているのですが/opt/localというフォルダには800MBほど入っています。

さいごにこれらのツールを起動するシェルスクリプトを書きます・・・というところでシェルスクリプトの書き方を勉強し直すことになりました。ペーパードライバーが20年ぶりに運転するような気分です。

#!/bin/sh
mkdir temp-by-script
for I in "$@"
do
echo Processing "$I"
pdfimages -j "$I" ./temp-by-script/
mogrify -level 15%,85%,0.5 -resize 758x1024 ./temp-by-script/*.jpg
zip -q "${I%.pdf}.cbz" ./temp-by-script/*.jpg
rm temp-by-script/*
done

使用法は、PDFファイルをおいてあるディレクトリをカレントにして、このスクリプトを”convert_glo.sh”とでも名付けておき”chmod u+x convert_glo.sh”で実行可能にします。その上で” ./convert_glo   (ファイル名:ワイルド・カード使用可)”とすると、temp-by-scriptというディレクトリが作られて、その中にイメージを展開、修正したあとで圧縮します。展開したファイルを後で削除するようになっているところ以外は既存のファイルを壊すことはないのではないかと思いますが、使用して何か損害があっても補償はいたしかねます。

なおmogrifyのパラメータについて補足説明しますと、輝度85%以上は白に、15%以下は黒に強制するのと、その間のところのガンマ値を0.5にして色を黒っぽいものにするという設定です。シェルスクリプトの部分はほんとにプリミティブなのでもうちょっと練った物を書ければいいのですが自分の用事にはこれで足りてしまうので。テンポラリフォルダも消していませんが、間違えて変なものを消してしまうのが怖いのであえて書いていません。

ところで、ファイル名を日本語にしているのですが一部のファイル名でワイルドカードの展開がうまくいきません。OSXの問題なのかと思いますがLinuxなどではどうなのでしょうか。

2013.10.25 追記:ファイル名に空白(スペース)を含む場合うまくいかないのでスクリプトを修正しました。ダブルクォートをつけるだけなのですが、テキストエディット.appを使うと変な感じになってうまくいかないです。
2014.1.13追記:ダブルクオートがWordPressによって勝手に整形されていたので、シェルファイルのところはcodeとして表示するようにしました。これまで表示されていたテキストを直接コピーアンドペーストしたときにはうまく動かなかったのではないかと思います。

2015.12.9 追記:mogrifyのあとのresize 758×1024のxが変な文字×(掛け算?)になっていました。どこでこうなったかよくわかりませんが、このページからコピペした時はここでエラーになると思われます。直しておきました。

広告