@iori0121 の tweet で「マンガで分かるLisp(Manga Guide to Lisp)」の存在を知った。ちょっと読んでみたいなと思ったものの、ブラウザでスクロールして読むのが面倒だなと思って PDF 化してみることにした。
王道(?)としては、全ての画像を手動で取得して、Acrobat で PDF 作成なんだろうけど、流石に面倒なので画像取得の部分からスクリプト化してみた。構成は Ruby 1.9.2 + Nokogiri + Prawn で。Hpricot は、ちょっと触ったことあったけど、Nokogiri は初めて使った。
Prawn での PDF 作成も初めてだったけど、簡単でいいなぁ。ただ、image 等の座標軸( :at で指定するもの)の概念がオレの期待値と違っていて、しばらくハマっていた。
例えば、画像を PDF の左上にマージンなしでピッタリ置きたいと思って、次のように指定したら見当違いのところに描画されてしまった。
pdf.image IMAGE, :at => [0,0]
おかしいなぁと悩んで、いろいろと調べてみたところ、次のように記載すれば OK と分かった。
pdf.image IMAGE, :at => [0,640]
640 というのは、今回の PDF サイズ 480 x 640 の縦方向の数字。これで期待通り、左上からピッタリの位置に画像が描画された。
ということで、作ったスクリプトを GitHub へ置いてみた。目次が無いとか、登場人物一覧ページも欲しいなとかあるんだけど、まぁ、とりあえず全エピソード(?)をひとつの PDF ファイルに入れることができてると思う(検証してない。。。)
利用するには、Ruby 以外に日本語フォントが必要。オレは「Ume-font」を利用させて貰った。
それから「マンガで分かるLisp」の再配布条件が分からなかったので、コレで生成したPDFの配布はとりあえず辞めとく。
自由に配布してかまいませんよ。<br>「使用した画像がいつのものか」という情報と、<br>「本家の方は時間と共に修正される可能性がある」という<br>注意書きを書いていただけると助かります。
ありがとうございます。<br>本来はこちらからご連絡すべきなのに、わざわざすみませんっ!