linuxBeanでiOSから印刷可能なAirPrint対応仮想PDFプリンタを構築する方法。
こんにちは!
サイト管理人のYosukeです。
iOSで開いている画面や、表示中のウェブサイトをPDFに変換したいな~と思うときが多々ありまして、
LinuxでAirPrint対応の仮想PDFプリンタを構築出来ないかな…と思ったら、案外簡単だったのでご紹介します。
お気に入りのlinuxBeanで作業を進めていきます。
目次
必要なソフトウェアのインストール
Synaptic パッケージマネージャで、
- cups
- cups-pdf
- avahi-daemon
- python-cups
をインストールします。(推奨の追加パッケージも全てインストールします)
(apt-getでインストールしても構いません)
$ sudo apt-get install cups cups-pdf avahi-daemon python-cups
CUPSの設定
Operaブラウザを開いて、URLをhttp://localhost:631/admin
と入力して、
CUPSサーバー(プリントサーバー)設定の画面を開きます。
cups-pdf を共有プリンターにする(重要)
デフォルトでは「共有しない」になっていますので、変更します。
[ プリンターの管理 ] ボタンをクリック。
先ほどインストールした、cups-pdf 「PDF」をクリック。
右側のプルダウンメニューより [ プリンターの変更 ]をクリック。
ここは設定変更不要です。「続ける」をクリック。
共有:このプリンターを共有するにチェック。「続ける」をクリック。
ここは設定変更不要です。「プリンターの変更」をクリック。
これで cups-pdf の共有設定は完了です。
プリントサーバー設定を変更する
続けて「管理」を開きます。
[ 設定ファイルの編集 ]をクリック。
一番下の行に
ServerAlias *
を追加して[ 設定の保存 ]をクリック。
サーバー設定:の項目に下記のようにチェックを入れて[ 設定の変更 ]をクリック。
これで CUPS の設定は完了です。ブラウザを閉じて下さい。
Avahi用のサービスファイルを作成する
AirPrint用に、avahiが利用するサービスファイルを作成します。
airprint-generate.py というスクリプトを利用する方法が簡単なのでこれを利用します。
ターミナル(端末)を使用した操作になります。
$ mkdir ~/script $ cd ~/script $ wget https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
あっと言う間ですが、wget というダウンロード用コマンドを使用して、
airprint-generate.py スクリプトを、~/script(/home/yosuke/script/) にダウンロードしました。
スクリプトを実行します。
$ sudo python airprint-generate.py
何も起きなかったような感じになりますがこれでOKです。ターミナルを閉じて下さい。
Avahi用のサービスファイルを移動する
先ほどのスクリプトファイルと同じディレクトリに、サービスファイル、AirPrint-PDF.service が出来上がっています。
point!
もし、ここでサービスファイルが出来上がっていない場合は、プリンターの共有設定が出来ていない可能性があります。「cups-pdf を共有プリンターにする(重要)」の項に戻ってもう一度確認して下さい。
「rootユーザとして現在のフォルダを開く」で開き直してから、AirPrint-PDF.service を切り取り、
/etc/avahi/services
に貼付けます。
これで完了です。
このサービスファイルを適用する為に、ターミナルを開いて
$ sudo service avahi-daemon restart
で、Avahi を再起動しておきます。
ファイアウォールの設定
外部から接続する際のお約束、ファイアウォールでポートを開放する事も忘れずに。
iOSからプリンターが表示されれば完了です。
いざ印刷!
印刷(変換)されたPDFデータは、/var/spool/cups-pdf/ANONYMOUS
に保存されます。
導入後の考察
プリントサーバーのcups
、bonjourプロトコル利用のavahi
、仮想PDFプリンタのcups-pdf
を組合せて、
iOSのAirPrint機能から、印刷出来るようになった。という感じですかね。
応用出来ること
iOS(iPhoneやiPad)からプリンターで印刷しようと思ったら、AirPrintに対応のプリンターを準備しないと印刷出来ません。
ひと昔前のプリンターは対応していませんでしたので、その為にプリンターを新規購入した人も多いと思います。
この作業を通じて、AirPrintに対応していないUSBプリンターやネットワークプリンターも、linuxBeanと接続さえ出来れば
iOSから印刷出来るようになるわけなので、かなり便利なのではないでしょうか。
ちょっと、今更感はありますが、どなたかの参考になれば幸いです。