書式
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 に変換する。クラッジ (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 名を調べるためにこのファイルを読む。