2017-02-25 4 views

答えて

2

RIP(Raster Image Processor)でジョブを渡すのは簡単ではありません。 LinuxおよびUnixでは、印刷ジョブはPostScriptファイルとして渡されます。 PostScriptは実際に完全な本格的なチューリング完全プログラミング言語です。つまり、Halting Problemが適用されます。

唯一の選択肢は、PostScript RIP(ラスタイメージプロセッサ)に渡して、いくつのページが出てくるかを確認することです。タイムアウトを追加することを忘れないでください。

GhostscriptはそのようなRIPであり、ヌルページの出力デバイスを提供します。このデバイスは、ページのカウントに最適です。最初のコマンドは、それがユーザの入力を待たないような方法でGhostscriptのを呼び出すためにtimeoutコマンドを使用しています

timeout 120s gs -dNOPAUSE -dBATCH -dSAFER -sDEVICE=nullpage <file> \ 
| egrep '^Page' \ 
| wc -l 

次のコマンドラインを使用し、1でファイル全体を処理し、既知の危険な機能を無効にし、生産ラスタ出力なし。このパイプをgrepに変換して、Pageで始まるgsの診断出力の行を探します。そのような行がページごとに生成されます。最後に、wcにパイプして一致する行の総数を数えます。 gsが120秒後に終了しない場合は、中止されます。

これは悪意のあるPostScriptファイル(-dSAFERを含む場合もあります)の影響を受けやすいことに注意してください。

関連する問題