アメリカンな左折

国道一号、多摩川を渡って環八との交差点。左ウィンカーを出している車が 何故か左に曲がらずによろよろと直進してゆく。もしや…、

とおもったら、案の定対向車レーンに侵入! ここは日本アルヨ。


LASER SHOT 使おう

職場机のとなりに置いてある 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 を動かす部分と、リモートプリンタ に投げる部分を分離しないとフィルタが動かないのだ。知らなんだ。


きまぐれ記
yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]