MacPortsのpdftkをインストールしようとすると、ビルド中にgcjを使うあたりで失敗していた。改めて試してみたら、リリースされたてのGCC 4.2を使うようになったらしく、まずGCC 4.2がインストールされて、その後、無事にpdftkもインストールされた。
前にpdftkを使おうとしたのは、たくさんのPDFを連結しようとしたときだった。具体的には、たくさんのフォルダにあるたくさんのPDFを、フォルダごとに1つのPDFにつなげたいと思った。次のようなフォルダ構造で、aフォルダ内のPDFをぜんぶ連結、bフォルダ内のPDFもぜんぶ連結、ということをしたかったのだ。pdftkでバッチ処理したかったんだけどインストールできなかったんで、けっきょくAutomatorのワークフローを作って対応。おかげでAutomatorの勉強にはなった。Automatorには標準でPDFを連結するアクションが入っている。
theFolder---a---a0.pdf | +-a1.pdf | +-b---b0.pdf +-b1.pdf +-b2.pdf
作ったワークフローは次のような感じ。Automatorだけでは話が済まず、これをAppleScriptで複数回自動実行させた(見て「なるほどね」と内容を理解できる人向けの参考として載せているのでそのままは使えません)。
AppleScriptはこんな感じ。上のワークフローを開いた状態でこれを走らせると、theFolder内にある各フォルダを順に選択してワークフローが走る。
tell application "Finder" activate set theFolders to folders of folder "Macintosh HD:somewhere:theFolder" repeat with theFolder in theFolders select theFolder activate tell application "Automator" execute workflow 1 end tell end repeat end tell
まぁ、pdftkが使えれば数行以内のコマンドで済むと思うけど、Mac OS X標準の機能でもこうして自動化できるのは良いですな。
Automatorに関してはAppleの人がGoogleで講演したビデオがGoogle Videoに載っていて勉強になる。汎用的なものや、毎日実行するようなものばかりを作ろうとせず、使い捨てでもいいからその時に必要なタスクを効率的にこなせるワークフローを作ってしまうというのが正しい心がけのように思う。たとえば、100個くらいあるファイルの一括リネームとかは、その場だけでも十分に役立つもんね。