kanizaのブログ

コンピュータ、ソフトウェア、映画、音楽関連や家族のことなど、思いついたことを書きます。

pdftkじゃなくてAutomatorでPDF連結

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で複数回自動実行させた(見て「なるほどね」と内容を理解できる人向けの参考として載せているのでそのままは使えません)。

Automator Workfow

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個くらいあるファイルの一括リネームとかは、その場だけでも十分に役立つもんね。

http://video.google.com/videoplay?docid=4244579625536637061