印刷フィルタは単純なものでも複雑なものでもかまいませんが、次の要件を満たさなければなりません。
フィルタは、標準入力からファイルの内容を取得して、変換後のファイルを標準出力に送信しなければなりません。
外部ファイルを参照するプログラムはフィルタとして使用できません。一般にユーザーは troff、nroff などのワープロプログラムをフィルタとして使用しがちです。LP 印刷サービスは、フィルタプログラムから「組み込みファイル」と呼ばれる他のファイルへの参照を認識しません。troff と nroff はファイルを組み込めるので、フィルタとして使用すると失敗することがあります。プログラムが処理を完了するために他のファイルを必要とする場合は、フィルタとして使用しないでください。
フィルタは、一般にユーザーがアクセスできないファイルに依存しないでください。ユーザーが直接実行するときにフィルタが失敗すると、LP 印刷サービスで実行しても失敗します。
低速フィルタは、ファイル内のエラーに関するメッセージを標準エラーに送信しますが、高速フィルタは送信しません。低速フィルタからのエラーメッセージは収集され、印刷要求を出したユーザーに送信されます。
低速フィルタが信号を受信したために終了すると、印刷要求が停止され、その要求を出したユーザーに通知されます。同様に、低速フィルタが 0 以外の終了コードを返して終了すると、印刷要求が停止され、ユーザーに通知されます。高速フィルタからの終了コードは、異なる方法で処理されます。
フィルタにプリンタ障害を検出させたい場合は、次の要件も満たしてください。
フィルタは終了する前にできるだけ障害がクリアされるまで待つ必要があります。また、障害がクリアされたら、印刷を停止したページの先頭から印刷を再開してください。継続機能を使用したくない場合は、LP 印刷サービスは管理者に警告する前にフィルタを停止します。
フィルタは、障害が認識されたらすぐにプリンタ障害メッセージを標準エラーに送信する必要があります。終了する必要はなく、障害がクリアされるまで待つことができます。
フィルタは、ファイル内のエラーに関するメッセージを標準エラーに送信してはいけません。これらのメッセージは、ユーザーが読み込める標準出力に含める必要があります。
フィルタは、ファイルの印刷が終了すると (ファイル内のエラーによって正常に印刷できなかった場合も) 終了コード 0 を返して終了する必要があります。
フィルタは、プリンタ障害によって印刷要求を終了できなかった場合にのみ、0 以外の終了コードを返して終了する必要があります。
フィルタをフィルタテーブルに追加する場合は、高速フィルタとして追加しなければなりません。