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 ファイルをダウンロードし、解凍するとインストーラパッケージが出現します。このパッケージをダブルクリックし、インストールを行います。
次に「システム環境設定」の「プリントとファックス」を表示します。プリンタ一覧の下に「+」ボタンがあります。これをクリックします。
![「システム環境設定」の「プリンタとファックス」 「システム環境設定」の「プリンタとファックス」](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSbjwW3vV1guWQFuNZFlWw72aY3aM5eowxjL7oqp18JkpRgAAJTMS5DUglZQhKsr4oefoo98GOc6Ehktow1uv0SEsAszRwAeRRN3T31XbohDOsGWh8NJZw2qWDs_2rEPNmmdFfR6wGG_6i/)
プリンタ選択ダイアログが表示されます。ダイアログのツールバーにある「デフォルト」クリックします。CUPS-PDF が表示されているのでこれを選択します(表示されるまで少し待つかもしれません)。
![「デフォルト」を指定し「CUPS-PDF」を選択する 「デフォルト」を指定し「CUPS-PDF」を選択する](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXsUaLRvTGMeTh26igm5ASelE7F-fPchBCrfFhjhl5oBXjOCRywvOQ8pVMFcjI1C_43AMl2u2D-gKQJi2TDKBdGloe9kfYLZ15EbS7ch-XcGpWJwmScaMhkfGWrul0hRxUQ59MOtAee6Pe/)
ダイアログ下部の「ドライバ」メニューから「使用するドライバを選択...」をクリックします。
![ドライバの選択 ドライバの選択](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgFtDASX5BOQ3HtXZ1D-Rm1bTudWSwEedW6CLnmzBKJgiYElgMWCb3Q3-OkaX-UzyDlF7NyG0giqe6SDVBUGn85NC0_xi7K3TH0HrmYtGKuwCnJNurpuM64NNtnZMAlkUeZEx8YVFLuN0k/)
ドライバの一覧が表示されるのでその中から「Generic postscript color printer」を選択します。
![Generic postscript color printer を指定 Generic postscript color printer を指定](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQXpliViOqS1oDB0seg0VVp98pboJTcQEEZS0OOlfCh6-j09Hjus-aPET9JeSltQJbrN_wvtmt53KwBU_Z7EloYPZviXUSMNm5UfykPANjYlFfmaOFssxancur0sarCgWMZH1gdw_OV6vs/)
ダイアログの追加ボタンをクリックします。これで CUPS-PDF プリンタが追加されました。
![「システム環境設定」の「プリンタとファックス」でデフォルトプリンタを指定 「システム環境設定」の「プリンタとファックス」でデフォルトプリンタを指定](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqEMkzi7_Cy-sP1UkkkaQL_gqZAD_y5JVgR-hJHz1vdjczXv_FlpHg68_kgS74vfiDojl9s7o3IZlDQ25khdaOOpAJ2pJDC_r7sGfTWESjlrsCCBp3Ec7tTRJnjSy3cYFFoj4u4jCooofE/)
仕上げとして、「デフォルトのプリンタ」に CUPS-PDF を指定しておきます。ここまでできたら一度、何らかのアプリケーションで「プリント...」メニューを選び、プリントダイアログを表示させてみてください。
「プリンタ」に CUPS-PDF が選択されていることを確認して、そのまま「プリント」ボタンをクリックしてみてください。デスクトップに「cups-pdf」というフォルダが作られ、その中に PDF ファイルが出力されます。これだけでも楽になるのですが、ここまできたら、もう少しです。AppleScript で操作するためにもう少し設定を行います。
何らかのアプリケーションから再度「プリント...」メニューを実行し、プリントダイアログを表示します。このダイアログのポップアップメニューから「カラーマッチング」を選択し、「プリンタのカラー」を選択します。
![プリントダイアログのカラーマッチングの設定 プリントダイアログのカラーマッチングの設定](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSk2vQWSqAFGKp9hCFmiVNevQc_osK6JVMx-_boDcNW0X50RZImFipuypSAtXhiXyU84lgdtEwXjNCrEqDk_TU2z6OwSGZp7UBoMt0zW57EHgcYcLU6o8Sce8t_iZHmX8TvxLDz3Y-wZBn/)
この設定を「プリセット」メニューにある「別名で保存...」で、名前をつけて保存します(ここでは「cups-pdf-color」として保存しました)。
![プリントダイアログのプリセットの設定 プリントダイアログのプリセットの設定](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigfwhLSp_MGmWBjGIqUlfuds9V8ehJ5r223C_wOIz6dTffUxdbicScSAVCBKuVqAAyPluM5OtX_7TyPpFEaF9DVxc4jRRYEODOchOrAAmVYiUJpUnd8S4ruqZgoO2D27KmAcURb492HRHx/)
これで完了。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 を思い浮かべるのは私だけでしょうか?