スキャンしたpdf/画像から一括して余白を消す方法。linux/macのコマンドラインを使って。

本をスキャンした際に、スキャンサイズと原稿サイズが一致していなくて、余白ができてしまうことがあります。

その余白をコマンドラインで一括して削除する方法を紹介します。

イメージ

次のようになっている本を

□□□□□□■■
□□□□□□■■
□□□□□□■■
■■■■■■■■

このようにしたいとします。

□□□□□□
□□□□□□
□□□□□□

pdfの場合は、まずはjpg画像に変換

pdfのjpgへの変換には、pdfimagesを使います。このコマンドはxpdfツールセットうちの一つです。

インストールされていない場合は、macならば brew install xpdfでインストールします。

pdfの中に埋め込まれているjpgを抜き出します。文字データの場合は抜き出されません。

次のように使用します。

pdfimages -j original.pdf original 

すると、original.pdfからoriginal-0000.jpgのような連番の画像ファイルが抽出されます。

画像の余白座標を見積もる

identifyコマンドで、画像サイズを確認します。imagemagickツールセットのうちの一つです。

identify original-0000.jpg

画像ビューアーなども併用して、余白サイズを見積もります。

画像の余白をカット

次にconvertコマンドで、余白をカットします。これもimagemagickツールセットのうちの一つです。

convert -crop 2000x1000+0+0 original-*.jpg cropped.jpg

開始座標(0, 0)で、サイズ2000×1000の画像 cropped-0000.jpgが連番で出力されます。

余白の座標は、面倒でなければトライ&エラーで決めればよいでしょう。

 

ページの順序がおかしくなりましたか?

10ページ以上あると、入力ファイルの順番が 1, 10, 2, 3, 4, …, 9 となるのが原因です。

その場合は、次のようにsortを間に入れましょう。

convert -crop 2000x1000+0+0 `ls original-*.jpg | sort --version-sort` cropped.jpg

回転したい場合

なお、画像を90度回転しておきたい場合は、convertコマンドを使って、次のようにします。

convert -rotate 90 original-*.jpg rotated.jpg

連番jpgをpdfへ変換する

最後に、convertコマンドを使って、画像をpdfに変換します。(余白座標が決まっている場合は、ひとつ前のconvertコマンドで、出力を直接pdf形式にしてもよいでしょう。)

convert `ls cropped-*.jpg | sort --version-sort` output.pdf

以上で、余白を削除したpdfファイルになりました。

おつかれさまでした。

pdfの奇数/偶数ページだけ上下逆さにしたい場合

なお、pdfのままでページの回転をしたい場合には、pdftkを使えばできます。

input.pdfの偶数ページだけ180度回転して、output.pdfに出力するには次のようにします。

pdftk input.pdf shuffle odd evendown output output.pdf

pdftkでは、shuffleの部分がcatになっている例をよく見かけますが、今回の場合はそうすると、奇数ページをすべて出力した後に、偶数ページが出力され、ページ順が変わってしまいますので、注意です。

逆に、奇数ページだけ回転する場合には次のようにします。

pdftk input.pdf shuffle even odddown output output.pdf

downのところは、north, south, east, westなどと変えることで回転方向を選択できます。

詳しくは、pdftk –help | grep rotate などを参照してください。

 

以上、スキャンしたpdf/画像から一括して余白を消す方法。linux/macのコマンドラインを使って。でした。