psf - PostScript フィルタ
psf [
-n name ] [
-h host ] [
-w
width ] [
-l length ] [
-i indent ] [
-c ]
psf は PostScript
印刷をするための
lpd
フィルタである。
psf
は、どのフィルタを起動するかを決めるために、
自分がどういう名前で呼び出されたかを調べる。
まず、名前のどこかに文字列
``pap'' がある場合は、
psf
は AppleTalk
を経由してプリンタと通信するために
pap を起動する。
次に、文字列 ``rev''
がある場合は、
psf
はジョブのページを逆順にするために
psorder を起動する。
最後に、
psf
が名前の先頭部にフィルター名を付けて呼ばれた場合は、
そのフィルタを起動する。
実行するフィルタがない場合、
psf
は入力のマジックナンバーを調べ、
入力が PostScript
でない場合は PostScript
に変換する。
デフォルトの設定では、
psf は 2
つのクラッジをサポートしている。
1
番目のクラッジは、自分の名前に文字
`m' があるかどうかを
psf
にチェックさせる。
この文字があり、アカウンティングが有効になっている場合、
psf は
pap を 2
度呼び出す。 1
度目は初期ページカウントを取得し、印刷ジョブを行うためである。
2
度目は最終ページカウントを取得するためである。
これは、プリンタが PAP
出力ファイルを閉じなくなるといった、
いろいろな PAP
実装に含まれるバグに対処するためのものである。
その顕著な例は Hewlett-Packard
のプリンタである。
2
番目のクラッジは、自分の名前に文字
`w' があるかどうかを
psf
にチェックさせる。
この文字があり、アカウンティングが有効になっている場合、
psf は
pap を
-w
フラグ付きで呼び出す。
このフラグがつくと、
pap
はプリンタ状態に文字列
`idle'
が現われるまで待つ。
見つかったら、通常と同じく印刷ジョブが行われる。
このクラッジは、特に
Hewlett-Packard の LaserJet IV に
対処するためのものである。
このプリンタは、前のページがまだ印刷されている際中に
ページカウントを報告する。
以下の
printcap
エントリの例では、
テキストファイル・PostScript
ファイル・
troff の C/A/T
出力・
TeX の DVI 出力を
AppleTalk に接続された LaserWriter Plus
で印刷するために
psf
を起動する。 LaserWriter Plus
はページを降順に積み重ねるので、
ページを逆順にして、バーストページを最後に印刷する。
laser|lp|LaserWriter Plus on AppleTalk:\
:sd=/usr/spool/lpd/laser:\
:lp=/usr/spool/lpd/laser/null:\
:lf=/var/adm/lpd-errs:pw#80:hl:\
:of=/usr/lib/filters/ofpap:\
:if=/usr/lib/filters/ifpaprev:\
:tf=/usr/lib/filters/tfpaprev:\
:df=/usr/lib/filters/dfpaprev:
該当するホストが複数の
AppleTalk
プリンタにスプールする場合、
lp 機能として
/dev/null
を使用すべきではない点に注意すること。
そうではなく、上の例でやっているように、
各プリンタに対して
mknod を使って null
デバイスを作成すべきである。
最後に、スプールディレクトリ
/var/spool/lpd/laser には
.paprc
という名前のファイルがある。
pap はプリンタの AppleTalk
名を調べるためにこのファイルを読む。
psorder(1),
printcap(5),
lpd(8),
mknod(8),
pap(8).