WindowsコマンドラインからPDFをCrop
この手の記事は何度か書きましたが,
コマンドラインからCropするメモを残します。
(大体同じことを3回調べたらもう記事化するつもりでいます。)
大前提:PDFの余白について
matlabやPPTでpdfを作ったり,
texに付属するps2pdf.batを使って
ps2eps.bat hoge.eps hoge.pdf
でepsをpdfにしたりできます。
同様にepstopdf.plを動かすのも良いでしょう。(こちらはバージョンが1.5になる都合で時々困るんですが)
こいつらはとんでもない余白を持っているので,いつだかの記事で余白を切り取る手法を紹介しました。
bcpdfcrop
有名なpdfcropにpdfcfop.plがあります。
これはperlを入れていることが前提ですが,まとめて処理できてとても良いです。
Perl入れたくない!という方には以下のbcpdfcropやtcpdfcropのbatファイルが用意されています。
GitHub - aminophen/bcpdfcrop: Windows batch file for pdfcrop
githubからbatファイルをpathの通った所において,
とすることでcropしたPDFを作成可能です。
bcpdfcrop.bat hoge.pdf
batファイルの変更
但し,デフォルトではファイル名のうしろに-cropとつくので名前を指定するか
bcpdfcrop.batやbcpdfcrop_multi.batを開いて「-crop」を全て「_c」とかに変更します。(ハイフンをファイル名に使いたくない)
まとめて実行
まとめて実行するには,cropしたいフォルダに移動して
bcpdfcrop.bat *.pdf
とすれば全てのpdfをcropしてくれます。
できれば名前を変えずそのまま更新するには…どうすれば?
名前を変えずに全てのPDFをCropするbatを作成
2018年8月追記:製作者の方からコメントをいただきました。
「元のPDFを上書きしない」との理念があるようで,同じ名前を指定できないようになっているそうです。
コメントの通り,以下の手順を用いるなどの回避策をうちましょう。
(1) bcpdfcrop.bat を使って foo.pdf → foo_c.pdf でクロップする
(2) del foo.pdf で元のファイルを削除
(3) move foo_c.pdf foo.pdf(または ren コマンド)でファイル移動
bcpdfcrop.batに基づいてPDFをそのままの名前で再cropするbatを作成しました。
名前は「bcpdfcrop_all.bat」とします。
@echo off for "usebackq delims==" %%i IN (`dir/*.pdf`) do bcpdfcrop.bat %%i %%i
あれ~なんかおかしい…
あとで考えよう…