Gマイナー志向

とくに意味はありません

セブンイレブンのネットプリントをMac OS XやLinuxや*BSDなどで仮想プリンタとして使う

以前、CUPSからネットプリントに出力する簡単なプログラムを紹介したが、最近それが動かなくなったとコメントを頂いたので、色々書き直してみた。

仕組み

CUPS-PDFでPDFファイルを生成し、それをセブンイレブンのネットプリントサービスに投げるだけ。APIは用意されていないのでCGIを直接叩く。

やり方

アカウント取得

http://www.printing.ne.jp/register/index.html にアクセスしてユーザIDとパスワードを取得する。

CUPS-PDFのインストール

まずCUPS-PDFをインストールする。

Linux/*BSDであれば各ディストリビューションのパッケージまたは本家サイトにあるtarball/rpmをインストール。gentooはemerge cups-pdfでok。

Mac OS XCUPS-PDF for Mac OS Xをダウンロードしてインストール。

CUPS-PDFの設定

次のPerlプログラムを任意の場所に置く。ここでは/usr/local/bin/cups-pdf-netprint.plを想定。

このうち、ユーザーIDとパスワードと書かれた部分を先ほど取得したアカウント情報に書き換える。メールアドレスには印刷に必要なプリント予約番号が届くので携帯端末で見られるメールアドレスがオススメ。

設置後、/etc/cups/cups-pdf.confにプログラムが自動的に呼び出されるように設定する。

# vi /usr/local/bin/cups-pdf-netprint.pl
(ユーザーID, パスワード, メールアドレスを設定)
# chmod +x /usr/local/bin/cups-pdf-netprint.pl
# echo "PostProcessing /usr/local/bin/cups-pdf-netprint.pl" >> /etc/cups/cups-pdf.conf
プリンタの追加

Linux/*BSDはcupsdを起動。

/etc/init.d/cupsd start

http://localhost:631/ にアクセスして、プリンタの追加でcups-pdfを追加すればいい。PPDはtarballの中に含まれている*1

Mac OS Xでは「システム環境設定」→「プリンタとファクス」を実行。プリンタの追加でCUPS-PDFが表示される。

あとは

印刷するだけ

注意点とTIPS

  • ネットプリントで印刷できるファイルサイズは2MBまで。CUPS-PDFで出力されたPDFファイルのサイズが対象なので注意。
  • 手抜きプログラムなのでエラー処理が入ってない。印刷してもメールが届かない場合は次の点を確認すること。
    • ユーザID、パスワードが間違ってないか
    • メール送信元フィルタ等をかけてないか
    • ページ数が多いもの、画像が多いものを印刷しようとしていないか*2
  • カラーが不要な場合はgrayscale Postscript Driverなppdに差し替える手もある。ppdの差し替えはMac OS Xでも可能。

TODO

  • 手抜きのため簡易スクレイピングしかしていない
    • Web::Scraperがインストールされてない状況でも動かせるように依存関係を最低限にした
    • あとでWeb::Scraperで書き直したいところ
  • ネットプリントへの送信時にエラーが発生した場合の対処がされてない
    • ユーザ名、パスワードが間違っている場合
    • ファイルサイズが2048KBを超えた場合
    • ネットプリントCGIにアクセスできなかった場合
    • Growl::Anyまたはメールで通知する
    • 最終的にはPDFを介さずcups-netprintを作るべき?
  • CGIを叩いてるので仕様変更があると対処できない
    • Mashup Award 5まではAPIが公開されていた
    • Mashup Award 6には参加されなかった模様
    • APIを一般に公開してくれないかなー
  • 出力されたPDFに応じて自動的に用紙サイズ、カラーを選択するといいかも
    • CAM::PDFを使えば良さげ

*1:extra/CUPS-PDF.ppd

*2:webサイトを印刷しようとするとすぐに超える