我正在使用 Ghostscript 将 PDF 文件的第一页光栅化为 JPEG。为避免创建临时文件,PDF 数据通过管道传输到 Ghoscripts 的标准输入中,而 JPEG 在标准输出上“排空”。在 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 的文档已经警告说,写入标准输出需要-q
标志来抑制标准输出上的消息,但我似乎仍然在这里遗漏了一些东西。