モチログ

はてなでのブログ

複数PDFを一度に電子ブックリーダー向けPDFに変換するスクリプト

というのをRubyで書いてみた。でも、Windows向けに書いています。なんのこっちゃ。

どういうものかと言うと、自炊PDF->それぞれのページをjpeg化->ChainLPで余白削除+電子ブック向けサイズに変換したPDF作成を自動で、しかも複数のPDFを一括で処理できるスクリプト

もとはAdobe Acrobatから画像生成->ChainLPでPDF生成を手作業でしていたため、とてもめんどくさかった。一気にやってる間に風呂に入りたい!そう思った。

一応スクリプトを公開する。自己責任で使用してください。コメント全然入れてないけど…。スクリプトだし、いいよね。

使用する前の事前準備。

  • Rubyをインストール。

ここからRubyの1.8系を入れました。

  • Rubyの必要なパッケージを入れる。

コマンドプロンプトから

gem install rghost

で入るはず。

  • gsのインストール

Ghostscript 9.02 and GSview 4.9 Jのページからgs902w32full-gpl.zipを入れました。

  • ChainLPのダウンロードと展開

No.722: ChainLPから最新版のChainLPをダウンロードして、解凍した内容をC:\ChainLP以下に起きます。フォルダは作ってください。スクリプトをいじれば変更は可能です。

  • ChainLPのデフォルト設定を行う。

一度ChainLPを起動して、変換したい電子ブックリーダーのサイズや設定をしておく。

これでたぶん準備は出来たはずで、あとは適当なフォルダを作って、その中に変換したいPDFと下に置いてあるスクリプトを置いて、スクリプトを実行すれば出来るはず。

できたPDFは拡張子.pdfの前にebという文字がついています。

MakeBook_v0.1.1

スクリプトは自由に変更してもらってかまいません。もっと良いのができたら教えていただきたいです。

 

以下、適当なコメント。

電子ブックリーダーって書いてますが、Kindle3でしか試してません。

最初は自動でPDF->jpegのみのスクリプトを書くつもりでしたが、ChainLPのリードミー的なChainLP.txtをみると、コマンドプロンプトからの実行も出来ると書いてあったので、おまけで追加しました。これは大助かりでした。

ChainLPの引数はなんかサイズの指定を行うと、実行されなかったので、スクリプトからは外しています。これは僕があんまり説明読んでないのが悪いと思う。いちおうスクリプトの方でガンマ1.8と右綴じにしています。変換前のPDF名は"[著者名]タイトル.pdf"にしておくと少し幸せになれるかもしれません。

一応実行したいフォルダのパスとか、gsのパラメータやChainLPの引数をスクリプトの上の方で定義したので、修正したい人はそこをいじってもらえるといけるはずです。

とりあえず試した環境はWindows7 Pro、Ruby1.8.7、gs9.02、ChainLP0.40-2を使用しました。