雑文発散

«前の日記(2011-01-22) 最新 次の日記(2011-01-25)» 編集
過去の日記

2011-01-23 [長年日記]

[Ruby] 「マンガで分かるLisp」をRubyでPDF化してみた

マンガで分かるLispのPDF化

@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 ファイルに入れることができてると思う(検証してない。。。)

mangalisp2pdf

利用するには、Ruby 以外に日本語フォントが必要。オレは「Ume-font」を利用させて貰った。

それから「マンガで分かるLisp」の再配布条件が分からなかったので、コレで生成したPDFの配布はとりあえず辞めとく。

本日のツッコミ(全2件) [ツッコミを入れる]
zick (2011-02-26 19:01)

自由に配布してかまいませんよ。<br>「使用した画像がいつのものか」という情報と、<br>「本家の方は時間と共に修正される可能性がある」という<br>注意書きを書いていただけると助かります。

すずき (2011-02-28 10:43)

ありがとうございます。<br>本来はこちらからご連絡すべきなのに、わざわざすみませんっ!