2012-07-03(火) [長年日記]
■ 「カーネル・サンダースの自伝」をKindlizeする
「カーネル・サンダースの自伝」がすごく面白いらしいので、さっそくPDFをダウンロードしてみたら、見開きPDFだったという。しょうがない、いったん分解してからKindlizeしましょうか。
PDFを加工するのでなく、いったん画像化して、半分に割るという作戦にします。pdftoppmで抽出し、convertで右半分と左半分の画像(PNG)を生成:
% pdftoppm -r 300 sanders.orig.pdf ./sanders % for f in *.ppm; do convert $f -chop 1500x0 `basename $f .ppm`.1.png convert $f -gravity SouthEast -chop 1500x0 `basename $f .ppm`.2.png done % for f in *.png; do sam2p -j:quiet $f `basename $f .png`.pdf; done % pdftk sanders-*.pdf cat output sanders.pdf
sam2pでそれぞれをPDF化したのち、pdftkで一個のPDFにまとめなおし。なんでわざわざPDFにしなおしているかというと、こうすれば普通の自炊本と同じ体裁になるのでKindlizerが使えるから。実際は見開きでないページが2、3入っているので、それだけ特別扱いするなどの手作業が入ったけど、最小限の手間でKindlizeできた。
で、めでたく60冊の電子積読につけ加えられたわけであります。いったいいつになったら読めるんだろう……。
pdfの合体には、(最近の)poppler-utilsにpdfuniteというのがいて、最近はそれを使っています。
まあ、メタデータのコピーをする時にはpdftkが必要なのですが。。。
Debianのパッケージ前提だから、pdfuniteは使えないなー。かずひこがkobo向けに作ってたスクリプトにあった、pdftkのUTF-8関連コマンドも使えないしねぇ。
このPDFは文字の色が微妙に薄いので、convertの引数に "-normalize -gamma 0.5" とかいれると、くっきりしていい感じ。
あとは、二回リサイズするとどうしても文字がぼけた感じになるので、最終的にクロップしたサイズがドットバイドットになるように、最初のpdftoppmの解像度を変えたら、ずいぶんいい感じになりました。ぜんぜん最小限の手間ちゃうけど。
ガンマ補正は本家Kindlizerの方でやれるので。あと、リサイズは2回もしてないような?(上のスクリプトではリサイズしてないのでKindlizerでの1回のみ)
リサイズ二回というのはちょっと不正確でした。「最終的に欲しいピクセルサイズにあわせて最初からラスタライズ」の方が「とりあえず高画質でラスタライズ→リサイズ」よりも画質がいいと思う、という意味です。特に今回みたいに字が小さい場合は、最終の解像度でラスタライズする方がフォントのヒンティングがよりよく効くはず。
というわけで、うちでは -r 134.5 でラスタライズして、そこから 52,134,53,144 ずつcropして、リサイズ無しに600x750の画像にして本文だけPDFにしました。