7

Ghostscriptを使用してPDFファイルの最初のページをJPEGにラスタライズしています。一時ファイルの作成を回避するために、PDFデータはGhoscriptsのstdinにパイプされ、JPEGはstdoutで「ドレイン」されます。このパイプラインは、GSが無効なPDFデータを受信するまで魅力のように機能します。予想どおりstderrですべてのエラーメッセージを報告する代わりに、代わりに一部のメッセージをstdoutに書き込みます。

再現するには:

$ echo "Not a PDF" >test.txt
$ /usr/bin/gs -q -sDEVICE=jpeg -dBATCH -dNOPAUSE -dFirstPage=1 -dLastPage=1 \
    -r300 -sOutputFile=- - < test.txt 2>/dev/null
Error: /undefined in Not
Operand stack:

Execution stack:
...

2>/dev/null上記はエラーメッセージを抑制しないことに注意してください。Ghostscriptのドキュメントでは、stdoutに書き込むには、stdoutのメッセージを抑制するためのフラグが必要であるとすでに警告されてい-qますが、それでもここで何かが欠落しているようです。

4

1 に答える 1

15

Ghostscriptを本当に沈黙させたい場合は、コマンドラインを次のように変更します。

/usr/bin/gs -q        \
     -sstdout=%stderr \
     -sDEVICE=jpeg    \
     -dBATCH          \
     -dNOPAUSE        \
     -dLastPage=1     \
     -r300            \
     -sOutputFile=-   \
     - < test.txt 2>/dev/null

を追加-sstdout=%stderrすると、ドライバーがstdoutに書き込むことができるようにしながら、Postscriptstdoutをリダイレクトできます。(そのパッチは、2001年9月22日からGhostscriptに含まれています。)

于 2010-07-28T15:50:55.177 に答える