BJF850とPServer(corega)でPrinterServer


BJF850とcoregaのプリンタサーバにリモートから印刷する方法

canon から jfilter850-1.3-0.i386.rpmとbjfiltercom-1.3-0.i386.rpmを最低getしてくる。 そのほかのFAQや必用と思われる思われるファイル(instruction-1.3-0.tar.gz) も適当にgetしてくる。(バージョンは変わっているかも)

rpm -ivh jfilter850-1.3-0.i386.rpm
rpm -ivh bjfiltercom-1.3-0.i386.rpm

でインストール。

このままでは設定がローカルプリンタなのでリモートで使用できるように /etc/printcapを以下のようにする

lp2|bjf850raw:\
#       :lp=/dev/lp0:\
#       :lp:\
        :sd=/var/spool/lpd/lp:\
        :mx#0:\
        :sh:\
        :rw:\
#rmはcoregaのプリンタ名(hosts等に記入、nameが引ければOK)
        :rm=f850:\
#rpはcoregaのプリンタのポート名(Windowsでリモートプリンタとして見える名前)
#Coregaの説明書にはlpって書いてあったが間違いだと思う。
        :rp=PS-F850-P1:\
        :if=/usr/local/bin/bjf850raw:

lp|bjf850ps:\
#       :lp=/dev/lp0:\
#       :lp:\
        :rm=f850:\
        :sd=/var/spool/lpd/lp:\
        :rp=PS-F850-P1:\
        :mx#0:\
        :sh:\
        :rw:\
        :if=/usr/local/bin/bjf850ps:

ここでpsはPS用の印刷。lpはTIFF、BMP、PPMのイメージファイルの印刷

# /usr/sbin/checkpc -f で/var/spool/lpd/lpを作成
こちらのほうが以下よりよいかも

こちらはスプールディレクトリを/var/spool/lpd/bjf850ps,bjf850raw に分ける場合。

/var/spool/lpd/bjf850ps,bjf850rawはディレクトリを作成し、
chown daemon bjf850ps
chmod a+w bjf850psにしておく。

編集後は/etc/rc.d/init.d/lpd restart
を実行しlpdを再起動。

canon基々のfilterはローカルプリンタを使用するようになってる そのためインストールされた2のフィルターファイル以下のように 変更する。

/usr/local/bin/bjf850ps
の最期の行を
/usr/local/bin/bjcmd "gs -q -r$resolution -dNOPROMPT -dSAFER \ -sPAPERSIZE=$papersize -sDEVICE=bmp16m -sOutputFile=- - |\ /usr/local/bin/bjfilter \ --model $printer --imageres $resolution --fit" /usr/local/bin/bjf850raw の最期の行を /usr/local/bin/bjfilter --model $printer --media plain --papersize a4 に変更。

これでリモートから印刷可能になる

後はpsファイルは

lpr -Pps sample.ps

イメージファイルは

lpr -Plp sample.bmp

で印刷できる(ただし、bmpファイルの印刷位置は天地が逆になる:canonの仕様)

キューは lpq -Ppsでモニタ
削除は lprm -Pps xx 

ちなみに、textファイルを直接a2psを利用して出力するには
/usr/local/bin/bjcmd "/usr/local/bin/a2ps | gs -q -r$resolution -dNOPROMPT\ 
-dSAFER -sPAPERSIZE=$papersize -sDEVICE=bmp16m -sOutputFile=- - |\
/usr/local/bin/bjfilter \
--model $printer --imageres  $resolution --fit"

なんてすればできた。

ところで bjfilter のオプションの--guiはGUI(プリンタ設定の表示)だし、 --lgmonも双方向のstatus monitorのオプションのようである。そのためプリンタ と通信しようとしてエラーする(coregaのPserverは双方向通信は サポートしていないため)ためうまくリモートからは動作しない。 デフォルトのフィルタではGUIでいろんなことをきめて印刷できる のでローカルプリンタとしては便利だがリモートでは使用できない。

(おまけ OpenOffice)

OpenOfficeでのプリンタ設定は $ /home/okada/OpenOffice.org1.0.1/spadmin を実行し、Generic Printer のプロパティを開き コマンドの選択で、 lpr -Pps に変更する。