紙の本を自炊する、あるいは、Kindle本をPDF化する、という話を定期的に書いてきました。
直近(でもないですが)だと、以下のようなことを書いています。
似たような投稿は数多くあるのでいろんな方が自分専用のPDF化ツールを作っている感じかと思います。
僕も自分で作ったツールがお気に入りで、自分の用途にはもう十分に機能していると実感しています。
ただ、1つ問題がありまして、ツールでPDF化するときにはKindleアプリで見開き状態でスクショするためPDFは1ページに2枚ある感じになってしまうんですね。。。PCで見る分には問題ないのですが、スマホなど画面が狭い端末ではやはり1ページずつ読みたい場合が出てくる問題が以前からありました。
さて。。。たまたま思いついてググってみたところ、以下のようなサービスが見つかりました。上の方は一定ページ数以上は有料で、下の方は無料でできるのですがとても遅い問題がありました。
DeftPDFをオンラインで無料で使って、PDFページを途中で分割
PDFページを半分に分割 オンライン100%無料| i2PDF
ローカルでできたらなと。ググってみると以下のコマンドが見つかりました。個人利用であれば無料で使わせてもらえるようです。
ちょっと色々と使い方に迷いがありましたが、とりあえずredditの記事のおかげで使い方はわかりました。
せっかくなのでスクリプトにして簡単に済ませたらいいなと思い、以下作りました。
前準備
まず、なんでもよいので見開き2ページが1ページになっているPDFを用意します。僕のツールを使うのであればどうぞ。
ターミナルで実行すればKindle ClassicのアプリのウィンドウIDを取得してそのウィンドウのスクショをとりつつページを進める操作をしてくれます。シェルスクリプトの実行方法等がわかっていないとこれだけの説明では厳しいかもですが。。。とりあえず。画像ファイルがoディレクトリ内にできますので、そこでXnConvertなどを使って不要部分をクロッピングします。
で、クロッピングした画像群を全部選択してプレビューで開き、印刷を選択して出力先をPDFにします。これで画像ファイルから2ページ見開きのPDFファイルが1つ生成できるはずです。
本題
今日のエントリーはここからですね。
まず、cpdfをインストールします。こちらをクリップして、macでの利用を想定しているのでIntelかARMのバイナリを選択してダウンロードしてください。ダウンロードしたバイナリはどこからでもアクセスできる場所(例えば、/usr/local/bin)に移動してください。
あとは、僕が作成したbashスクリプトをダウンロードして適当な場所においてください(僕は面倒なのでchmod +xで実行権をつけてcpdfと同じく/usr/local/binに置きました。
あとは、上記の前準備で用意したpdfファイルを引数につけてターミナルでコマンド実行するだけです。例えば、以下のような感じです。pdfファイルがa.pdfとしましょう。そして、スクリプトにCPDF.shというファイル名にしたとします。
CPDF.sh a.pdf
実行に成功すれば、_a.pdfというファイルが生成されるはずです。それは見開きが左右1ページずつに分割されたPDFファイルになっているはずです。オートメーション、いいですねぇ。。。自画自賛👃
はい。