名前
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 に変換する。
.Osato: kludge 恰好の悪い解決法?
クラッジ (KLUDGE)
デフォルトの設定では、 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 名を調べるためにこのファイルを読む。