プリントサーバを介して印刷する (BJ S6300の場合)

Canon の BJ S6300 をFreeBSDで使えるようにしました。プリンタは Corega のプリントサーバ、 corega PServer に繋がっているので、これを介して印刷するように設定します。

まず、bjfilters6300を入れるため、Linuxバイナリ互換機能を追加します。RHL 6.1ベースと7.1ベースがありますが、7.1の方をインストールしてください。作業手順は以下の通りです。

  1. cd /usr/ports/emulators/linux_base
  2. make;make install;make clean
  3. /etc/rc.conf をエディタで開く
  4. linux_enable="YES" を追加

また、linux_base-6を既にインストールしていて、linux_baseがうまくインストールできない場合は pkg_info で該当するパッケージを探し、 pkg_delete パッケージ名 で削除してください。それでも駄目なら、/compat/linuxを削除(安全のため名前の変更の方が無難だと思いますが)すればとりあえず何とかなります。全く持って美しくないですけれど。

次に、GhostScriptとBJ S6300用のフィルタを入れます。手順は以下の通り。

  1. cd /usr/ports/print/ghostscript-gnu
  2. make;make install;make clean
  3. cd /usr/ports/print/bjfilters6300
  4. make;make install;make clean

そして、各種設定を行います。まず、/etc/printcap に以下の文字列を追加します。

lp:\
       :mx#0:\
       :sh:\
       :sd=/var/spool/lpd/local/:\
       :lp=/dev/null:\
       :if=/usr/local/libexec/bjs6300ps:
 
remote:\
       :mx#0:\
       :sh:\
       :sd=/var/spool/lpd/remote/:\
       :rw:\
       :rm=ホスト名:\
       :rp=ポート名:

rmに書くホスト名はPServerのホスト名、ポート名はPServerで設定したポート名です。次に、スプール用のディレクトリを作ります。 /var/spool/lpd/local/ と /var/spool/lpd/remote/ を作ってください。そして、ifで指定したフィルタ用スクリプトを作成します。/usr/local/libexec/bjs6300psを作成し、以下の内容を参考に設定してください。

#!/bin/sh
quality=3
papersize=a4
printer=BJS6300
resolution=360
 
/usr/local/bin/gs -q -dBATCH -r$resolution -dNOPROMPT -dNOPAUSE -dSAFER \
-sPAPERSIZE=$papersize -sDEVICE=bmp16m -sOutputFile=/dev/fd/3 - 3>&1 >&2 -|\
/usr/local/bin/bjfilter --model $printer --papersize $papersize --quality $quality|\
lpr -Premote

最後に、プリンタデーモンを起動します。 /usr/sbin/lpd と入力して起動してください。次回起動時からも自動的に起動したい場合は、/etc/rc.confに lpd_enable="YES" を追加してください。