国道一号、多摩川を渡って環八との交差点。左ウィンカーを出している車が 何故か左に曲がらずによろよろと直進してゆく。もしや…、
とおもったら、案の定対向車レーンに侵入! ここは日本アルヨ。
職場机のとなりに置いてある Canon LASER SHOT LBP2660 が使いたい。 とりあえず、 LIPS &ESC/Page &NPDL 対応 Ghostscript デバイスドライバ を持って来る。こいつを込にしたgsを作っておく。
で、標準入力に来たPSを gs を利用してLIPS4に変換するフィルタを作る。 たとえば /usr/local/etc/canonif としておこう。こんな感じ。
#!/bin/sh # case "$0" in *color) bpp=8 ;; *) bpp=24 ;; esac # # Read first two characters of the file # read first_line first_two_chars=`expr "$first_line" : '\(..\)'` if [ "$first_two_chars" = "%!" ]; then # # It is PostScript; use Ghostscript to scan-convert and print it # /usr/local/bin/gs -dBitsPerPixel=$bpp -dSAFER -dNOPAUSE \ -q -sDEVICE=lips4 -sOutputFile=- - | lpr -Pcreal else echo $first_line && cat & printf "\f" && exit 2 fi exit 2
このフィルタが動くように /etc/printcap に以下を追加。
creal|CanonLBP real:\ :lp=:rp=canon:rm=lbp2260:sh:\ :sd=/var/spool/lpd/creal:\ :lf=/var/log/lpd-errs:\ :mx#0: canon|lbp2260|Canon LBP2260:\ :lp=/dev/null:sh:sd=/var/spool/lpd/lbp2260:\ :if=/usr/local/etc/canonif:\ :lf=/var/log/lpd-errs:\ :mx#0:
ここで、printcap中の spool directory を掘っておこう。
# mkdir /var/spool/lpd/{creal,lbp2260}
ちなみにcrealというエントリは、/usr/local/etc/canonif からダイレクト に呼んでいる点にちうい。こういう風に if を動かす部分と、リモートプリンタ に投げる部分を分離しないとフィルタが動かないのだ。知らなんだ。