cpdf でPDFをマージする
自炊したPDFをコマンドラインでマージしたい。
pdftk
でやるかと思って、あらためて入れようとぐぐったら、El Capitan 以降の動作は怪しいとのこと。
ついでなので他にないかとぐぐったら cpdf
なるツールがあったので試す。
↑からバイナリをダウンロードして、パスの通ったディレクトリ(/usr/local/bin
等)に置く。
あるいはソースからビルドしてインストール。
マージするコマンドは下記のような感じ。
例)
input_1.pdf
の1-2ページと input_2.pdf
の3-4ページをマージして out.pdf
に出力する場合。
cpdf input_1.pdf 1-2 input_2.pdf 3-4 -o out.pdf
自分がスキャニングしたばかりのPDFは紙質などの関係で大体以下のような感じでファイル名を付けている。
- hoge_jacket.pdf(カバー1-4、カバーは無くしたりスキャニングして無い場合がある)
- hoge_cover.pdf(本体の表紙1-4、ハードカバーの場合はスキャニングして無い場合がある)
- hoge_body.pdf(本体の本文)
それを踏まえてif文も付けた以下のようなスクリプトを考えた。
PDFがあるディレクトリで下記のスクリプトを実行すると、マージしてディレクトリの名称のPDFに出力する。
if [ -e *_jacket.pdf ] && [ -e *_cover.pdf ]; then cpdf *_jacket.pdf 1-2 *_cover.pdf 1-2 *_body*pdf *_cover.pdf 3-4 *_jacket.pdf 3-4 -o "${PWD##*/}.pdf" elif [ ! -e *_jacket.pdf ] && [ -e *_cover.pdf ]; then cpdf *_cover.pdf 1-2 *_body*pdf *_cover.pdf 3-4 -o "${PWD##*/}.pdf" elif [ -e *_jacket.pdf ] && [ ! -e *_cover.pdf ]; then cpdf *_jacket.pdf 1-2 *_body*pdf *_jacket.pdf 3-4 -o "${PWD##*/}.pdf" fi
jacket.pdfを分割してスキャニングしたPDFの結合
cpdf *_jacket-1.pdf *_jacket-2.pdf -o "${PWD##*/}_jacket.pdf"
cover.pdfを分割してスキャニングしたPDFの結合
cpdf *_cover-1.pdf *_cover-2.pdf -o "${PWD##*/}_cover.pdf"