AirPrintでPDFをDropboxに送る
AirPrintは、ヒューレッド・パッカード製の限られた対応プリンタでしか印刷できない仕様で登場して、最初はガッカリした。しかし、前回の日記でやったように設定すれば、MacBookでプリンタ共有しているプリンタからも印刷可能になる。これでCanonでも、EPSONでも、その他どんなメーカーのプリンタでも、プリンタ共有さえ出来れば、そこから出力されるようになったのだ。
しかし、出力先は所詮、紙...。今やお金を払ってまでも書籍を懸命に自炊(PDF化)する時代に、さらに紙代・インク代にお金をかけて、印刷するのは馬鹿げている。もしかしたら、どこかで誰かがその印刷された紙をスキャンして、せっせとPDF化することになるかもしれない。AirPrint、便利かもしれないけど、でも結局使わない、ということになってしまうと思った。
ところが、このAirPrint、実は素晴らしい可能性を秘めていた。UNIX環境には、CUPS-PDFというプリンタ設定がある。これは、印刷する時のプリンタにCUPS-PDFを選択すると、PDFを出力してくれる。言わばドライバだけの仮想プリンタのようなものである。大変便利そうなのだが、OSX環境においてはQuartzがPDFベースの描画エンジンで、画面に見えているものすべては簡単にPDF化できる。だから、CUPS-PDFを使うまでもなく、今までほとんど使っていなかった。
そこに、AirPrintが登場した。今や自分のMacBookでは、プリンタ共有さえ出来れば、どんなプリンタからも出力できるはず。どんなプリンタでも...そう、CUPS-PDFからもきっと出力できるはずだ!そのことに気付いて、早速やってみた。
CUPS-PDF
インストール
- ダウンロードした CUPS-PDF 2.5.0 Installer.zip を解凍し、CUPS-PDF.mpkg をダブルクリック、手順に従ってインストールした。
システム環境設定
- システム環境設定 >> プリントとファックス で+ボタンを押すと、プリンタの追加 ウィンドウには CUPS-PDF が表示されている。
- CUPS-PDF を選択して、追加ボタンを押した。
- 「ネットワークでこのプリンタを共有」にもチェックを入れた。
印刷
- さっそく、MacBookからプリンタにCUPS-PDFを指定して印刷してみる。
- 印刷結果として生成されたPDFは、/ユーザ/共有/CUPS-PDF/ からアクセスできるようになっていた。
- 上記はエイリアスで、その実体は、/var/spool/cups-pdf/ というFinderからは不可視な階層になっていた。
- そのCUPS-PDFフォルダの中に、印刷者であるログインユーザ名のフォルダが生成されて、そこにPDFファイルが追加されていくようだ。
- PDFのファイル名には、ジョブ番号が付番されていた。
- ジョブ番号は、CUPS-PDFで印刷する度に+1されて行く。
- PDFを開いてみると、さっき印刷した内容がちゃんと表示された。
AirPrint
- AirPrintの場合、ログインユーザ名はどうなるのだろうと思っていたら、guest ユーザとなった。
- プリンタ共有しているMacBookで /var/spool/cups-pdf/guest フォルダが生成され、その中に印刷結果のPDFが追加されていく。
- ところで、/var/spool/cups-pdf/guest フォルダには、guest ユーザしかアクセスできない権限が設定されていた。
- よって、guestユーザでログインした時だけ、Finderで自由にアクセスできるようになる。
- いつも使っているユーザでアクセスできないのは、ちょっと不便だ。どうにかしたい...。
Dropbox
- 今やAirPrintによって、/var/spool/cups-pdf/guest フォルダにPDFが保存されるようになったことについては大満足。
- しかし、このままではguestユーザしかアクセスできない、秘密のPDFになってしまう...。
- 印刷結果は、自分が望む人に自由に渡せるようになって初めて、その利用価値が高まる。
- 紙の場合は、手渡し、FAX、郵送など、手間はかかるが確実に渡せる方法を知っている。
- それでは、guestユーザしか閲覧できないPDFファイルの場合は、どうするべきか?
そんな時こそ、Dropboxが大活躍する!
- もはや、あまりにも便利、かつ有名になってしまったDropboxについての説明は、ここでは省略。
- インストールは、以下の本家トップページから。
- 使い方の詳細は、以下の解説ページが大変参考になりました。(感謝です!)
/var/spool/cups-pdf/guestのアクセス権の変更
- これでAirPrintしたすべてのPDFが同期されるようになったかと思えば、そうではなかった。
- そう、アクセス権のない /var/spool/cups-pdf/guest 以下のファイルやフォルダは、同期されないのであった。(アクセス権がないのだから当然の結果なのだ)
- どうしようかと暫し悩んで、/var/spool/cups-pdf/guest のアクセス権 everyone=読み出しのみ を追加してしまった。
- 内包している項目にも適用して、現状のすべてのファイルは同期されるようになった。
CUPS-PDFの設定ファイルの変更
- 今度こそAirPrintしたPDFがDropboxと同期されるようになったかと思いきや、まだ問題があった。
- /var/spool/cups-pdf/guestと、その中に既に存在するPDFにはアクセスできるようになったが、
- 新規にAirPrintしたPDFにはアクセスできない状態。
- 新規生成されるPDFのアクセス権は相変わらず everyone=アクセス不可 で、guestしかアクセスできないのであった...。
- ファイルは見えているのに開くことが出来ないという、もどかしいことになっている。
- 生成されるPDFのアクセス権はCUPS-PDFが決めているはず。では、どうすればいいのか?
- 調べてみると、CUPS-PDFには設定ファイルがあった。
- /etc/cups/cups-pdf.conf
- その中の Key: UserUMask を設定することで、PDF生成時のアクセス権を変更できた。
- コメントマーク#を外して「UserUMask 0022」とすることで、GroupとEveryoneのアクセス権に「読み出しのみ」が追加された。
...(中略)... ########################################################################### # # # Security Settings # # # ########################################################################### ### Key: AnonUMask ## umask for anonymous output ## these are the _inverse_ permissions to be granted ### Default: 0000 #AnonUMask 0000 ### Key: UserUMask ## umask for user output of known users ## changing this can introduce security leaks if confidential ## information is processed! ### Default: 0077 UserUMask 0022 ### Key: Grp ## group cups-pdf is supposed to run as - this will also be the gid for all ## created directories and log files ### Default: lp Grp staff ...(中略)...
ちなみに、設定の意味は以下のように理解している。
- UserUMask 1234 となっていた場合、
- 不明(何の権限だろう?)
- 所有者の権限を制限
- グループの権限を制限
- 全員の権限を制限
- 上記は権限を制限する設定なので、それぞれの権限は以下のように設定されるようだ。
- 7だと、すべての権限が制限される。(つまり、アクセス権なしの状態)
- 0だと、権限の制限なし。(つまり、フルアクセスな状態)
- 2(2進数で 010)だと、読み・書き・実行の書き込み権限が制限される状態。(つまり、読み出しのみ可能な状態)
- つまり、chmodコマンドとは反対の意味になるのだ。
共有
- 一旦Dropboxで同期できれば、そのPDFは素晴らしい使い勝手になる。
- リンクアイコンにタッチして、Email Linkを選択すれば、PDFにアクセス可能なURLを書き込んでメールを起動してくれる。
- 共有したい人宛にそのメールを送信すれば、印刷したPDFを確認できる。(URLだけなので、メールはとっても軽いのだ)
- 誰もが自由に閲覧するためには、シンボリックな cups-pdf を Public フォルダに入れておく必要があった。
- ~/Dropbox/Public/cups-pdf/
- その他にも、DropboxにShareフォルダを作って、よりシンプルに共有する方法もある。(メールによるURLの通知が不要)
あとは創意工夫でDropboxの機能をフル活用して、さらなる便利な使い方が見つかるかもしれない。
Printopia
- 以上のことは、Printopiaというアプリケーションによって、ものすごくシンプルに実現できたのであった...。
- 但し、9.95ドルの有料アプリケーションである。(デモ版は1週間だけ自由に試用できる)
お金を払って機能を買うか、お金を払わずに知恵を付けるか、それが問題だ。