読者です 読者をやめる 読者になる 読者になる

Linux とかで PDF を結合とか n-up とかするコマンドたち

テクノロジー

我々大学生にとっては、授業資料持ち込み可とされた試験に持ち込む資料をいかに効率的に印刷するかということは死活問題であります。先日も、ある試験に Linux の man ページを厚さ 1cm ぶんほど持ち込もうとしていた人を見ました。 それはさておき、一見プロプラな何かが必要そうな PDF の編集も、単純なものであればコマンド一発で済ませることができます。大量の授業資料をガショッと印刷して、ライバルに差をつけちゃおう!

結合する

% pdfunite hoge.pdf fuga.pdf piyo.pdf out.pdf

とすると hoge, fuga, piyo の順で結合された奴が out.pdf として出現します。Arch では extra/poppler パッケージのコマンドでした。

また、

% pdfjoin hoge.pdf fuga.pdf piyo.pdf

でも同じことができます。こっちは extra/texlive-core パッケージです。

pdfunite のほうが高速 (体感) ですが、pdfjoin のほうが高機能です。

n-up

% pdfnup --nup 2x3 slide.pdf

こういうやつが

f:id:polamjag:20150209163516p:plain

こうなります。

f:id:polamjag:20150209163633p:plain

--help を見るとわかりますが、サイズやマージンなどをだいぶ細かく調整できます。Arch では extra/texlive-core のコマンドでした。

そのまま実行するとマージンとかが一切付与されないので、印刷されない部分が出てくるかもしれません。こういうときは、--scale <スケール値> とオプションをわたすと、ページを nup した後にスケールしてくれるので、結果的にマージンを発生させることができます。だいたい 0.9 くらいにしとくとスペースを最も有効に活用できると思いますが、プリンタなどにより異なると思うので適当に試してください。

実例

pdfnup には --batch オプションがあります。これをつけると、渡したファイル名全てに対して処理が実行されます。

% pdfnup --nup 2x3 --batch 01.pdf 02.pdf 03.pdf
(出力は略)
% ls
01.pdf
01-nup.pdf
02.pdf
02-nup.pdf
03.pdf
03-nup.pdf

というわけで、こういう感じにすると nup と結合が一発で出来ていい感じだと思います。

% pdfnup --nup 4x4 --scale 0.9 --batch *.pdf && pdfunite *-nup.pdf out.pdf

その他

pdfnup とかのバックエンドっぽい pdfjam というコマンドを使えばだいたい何でもできそうな気がしてきます。例によって extra/texlive-core のコマンドです。内部的に pdflatex を使っているようで、なるほどと言った感じですね。