CUPS-PDF という仮想(?)プリンタがあります。これが、便利だったりします。CUPS-PDF を使うと印刷時の出力が PDF になります。分かりにくいですが、Mac OS X のプリントダイアログにある「PDF として保存...」メニューのように印刷した書類が PDF で保存されるようになります。
詳しくは LinuxでPDFファイルを作成するには - @IT。
これだけなら、プリントダイアログの「PDF として保存...」メニューでいいじゃないか、と思われるかもしれません。しかし、この作業を AppleScript で自動化しようと思ったとき、どうすればいいでしょうか?
UI Scripting ができるから不可能ではないのですが、面倒です。CUPS-PDF を使うとこの作業を少し楽にすることができます。
ともあれ、CUPS-PDF をインストールします。CUPS-PDF Package for Mac OS X から Version 2.4.6.1 をダウンロードし、リンク先に書かれている通りにインストールしてもらえば大丈夫です(Mac OS X 10.5 Leopard で試しています)。が、分かりにくい部分があるので解説を。
先のリンクから zip ファイルをダウンロードし、解凍するとインストーラパッケージが出現します。このパッケージをダブルクリックし、インストールを行います。
次に「システム環境設定」の「プリントとファックス」を表示します。プリンタ一覧の下に「+」ボタンがあります。これをクリックします。
プリンタ選択ダイアログが表示されます。ダイアログのツールバーにある「デフォルト」クリックします。CUPS-PDF が表示されているのでこれを選択します(表示されるまで少し待つかもしれません)。
ダイアログ下部の「ドライバ」メニューから「使用するドライバを選択...」をクリックします。
ドライバの一覧が表示されるのでその中から「Generic postscript color printer」を選択します。
ダイアログの追加ボタンをクリックします。これで CUPS-PDF プリンタが追加されました。
仕上げとして、「デフォルトのプリンタ」に CUPS-PDF を指定しておきます。ここまでできたら一度、何らかのアプリケーションで「プリント...」メニューを選び、プリントダイアログを表示させてみてください。
「プリンタ」に CUPS-PDF が選択されていることを確認して、そのまま「プリント」ボタンをクリックしてみてください。デスクトップに「cups-pdf」というフォルダが作られ、その中に PDF ファイルが出力されます。これだけでも楽になるのですが、ここまできたら、もう少しです。AppleScript で操作するためにもう少し設定を行います。
何らかのアプリケーションから再度「プリント...」メニューを実行し、プリントダイアログを表示します。このダイアログのポップアップメニューから「カラーマッチング」を選択し、「プリンタのカラー」を選択します。
この設定を「プリセット」メニューにある「別名で保存...」で、名前をつけて保存します(ここでは「cups-pdf-color」として保存しました)。
これで完了。AppleScript を使って書類の PDF 保存が一気に楽になります。例えば、Safari で閲覧している Web ページを PDF で保存するには以下のようなスクリプト。
Script Editor で開く
tell application "Safari"
print document 1
end tell
これだけ。これでデスクトップにある「cups-pdf」フォルダに Web ページが PDF で保存されます。
もし、上記のスクリプトがエラーになるようでしたら、プリントダイアログのプリセットで先ほど保存した「cups-pdf-color」というプリセットが指定されていないかもしれません。このプリセット(というか、「カラーマッチング」で「プリンタのカラー」を使用する)を指定していないとエラーになるようです。プリントダイアログからの印刷ではエラーにならないのだから不思議としか言いようがないのですが。
たいていの書類を編集するようなアプリケーションでは AppleScript からの print 命令を受け取れるので上記のスクリプトのアプリケーション名を変更するだけで編集中の書類を PDF で保存することが可能になります。
ちなみにこの記事の元ネタは The Joy of Scripting の Batch converting *.webloc files to PDF using Safari and cups-pdf at The Joy of Scripting です。こちらの方が分かりやすいし、他にも興味深いことが多々書かれています。
ところで、The Joy of Scripting と聞いて The Joy of Sex を思い浮かべるのは私だけでしょうか?