2022年3月18日金曜日

pdfファイルの結合

(以下はMac環境でのお話)

作業していると,複数のpdfファイルを結合する必要が生ずることが多い。例えば,プレビューを使って左側にサムネールを表示させると,任意のポイントに別のpdfファイルをドラッグ&ドロップして1つのファイルに結合することができる。この方法では,ファイル数が増えページ数が多くなると面倒だし上手くいかないことも多い。

そこで,これまでは,Autometerが内部で使っているpythonスクリプトである join.py をコマンドラインに引っ張り出して使ってきた。 "/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py"により,~/join.py -o x.pdf ~/Downloads/y-*.pdf などとしていた。

これが,この度のOSアップグレードで使えなくなってしまった。python2.7系列が存在しない。python3になっている。スクリプトのヘッダを#! /usr/bin/python3とするだけでいけるかと思ったが,そんな甘くはなくて,エラーだらけになってしまう。

そこで,別解を探してみたが,これがなかなか面倒だった。

(1) ImageMagickのconvertを用いると良いという話があった。ImageMagickをhomebrewで再インストールすると,convertが使えるようになった。試してみると直ぐに結果が出たので,これで解決と思ったら,結合前のpdfファイルに比べ,結合後のものは画像が荒すぎる。確かに上の参考リンク先にもこのことが書いてある。そこで,dpiを400とか300にして試したところ,処理時間やファイルサイズが10倍以上になってしまって使えない。

(2) pdf 結合 コマンドラインで探してみると,popplerというpdfレンダリングライブラリに,pdfファイルを複数結合するコマンドである,pdfuniteというのがあるということだ。これも早速インストールして実行してみると,エラーが出て進めない。

(3) さらに他のものをということで検索すると,pdftkというコマンドが見つかった。brew install pdftkではヒットしないので,brew search pdftkとすると,pdftk-javaが出てきたので,これをインストールしたところ,pdftkコマンドが使えるようになった。使い方の例は次の通り。pdftk input?.pdf cat output out.pdf である。outputという指示を加えることを忘れないようにしよう。ファイルサイズも問題なしだ。これでとりあえず問題は解決か。

0 件のコメント: