PSプリンタで遊んだついでに、カラーの場合はインクジェットから出せるように /etc/printcap にエントリとフィルタを追加。ドキュメントを読んでいて初めて気づいたのですが、うちのHP Deskjet970Cxiを使う場合は 'ijs' というデバイスを使うのだそうです。これまで laserjet とかcdj550とかを使っていました(^^;。
で、ijsで出力してみると、案外綺麗なのです。使い方は例えばDJ970の場合、
gs -sDEVICE=ijs -sIjsServer=hpijs -sDeviceManufacturer="HEWLETT-PACKARD" -sDeviceModel="DESKJET 970" -r300x300 ・・・・のように呪文がとても長いのですが、出力結果はなかなか良好でWindowsのプリンタドライバと比較して色補正がされていない以外は特に見劣りしません。てことで、フィルタに書いておくと
% djpeg じぇーぺぐふぁいる | pnmtops | lpr -P プリンタ名で用紙一杯にでてきてくれるので、写真とかの印刷にはなかなか便利です。
ちなみに、gsのドライバはそれぞれ出来の良いものも多いのですが、hpijsは© Hewlett-Packard Companyという点で最強かもしれません(^^;
ところで、私がポストスクリプトプリンタにひかれる最大の理由は『フィルタやprintcapの書き方がわからない(^^;)』からなんです。例えば、HPのプリンタに出力する為に書いたフィルタは
#!/bin/shてな具合なのですが、人様のフィルタはたいがい
TMP=/tmp/gsf$$
gs -sDEVICE=・・・・ -dNOPAUSE -sOutputFile=$TMP \
-q - quit.ps >/dev/null 2>&1 && cat $TMP
rm $TMP
#!/bin/shです。私が試すと、『nページ目』とかのプリンタ表示窓に出てくるメッセージがstdoutに出力されるのでおかしな結果になってしまうのです。どうして人様の環境では後者で動くのかさっぱりわかりません。
gs -sDEVICE=・・・ -dNOPAUSE -sOutputFile=- -q -
[printcap]としています。どうしてこうしないと動かないのかもさっぱりわかりません。 # 『難しい事を理解しようとしないで使おうとする』のが最大の敗因なのですが・・・
ps|PostScriptPrinter:\
:lp=/dev/null:sd=/var/spool/lpd/ps:lf=/var/log/lpd-errs:\
:sh::mx#0:if=/usr/local/bin/gsf:mx#0:
[/usr/local/bin/gsf]
#!/bin/sh
TMP=/tmp/gsf$$
/usr/local/bin/gs -sDEVICE=lips4 -sOutputFile=$TMP -dNOPAUSE -q - >/dev/null 2>&1
/usr/local/bin/smbclient //SMBホスト/プリンタ名 -E -N -U guest -c "print $TMP" >/dev/null 2>&1
rm $TMP