Estoy usando Ghostscript para rasterizar la primera página de un archivo PDF a JPEG. Para evitar la creación de archivos temporales, los datos PDF se canalizan a la entrada estándar de Ghoscripts y el archivo JPEG se "drena" en stdout. Esta canalización funciona como un amuleto hasta que GS reciba datos PDF no válidos: en lugar de informar todos los mensajes de error en stderr como esperaba, todavía escribe algunos de los mensajes en stdout en su lugar.Impedir que Ghostscript escriba errores en la salida estándar
para reproducir:
$ 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:
...
Nota del 2>/dev/null
anterior no suprime los mensajes de error. La documentación de Ghostscript ya advirtió que escribir en stdout requiere el indicador -q
para suprimir mensajes en stdout, pero todavía me falta algo aquí.
Gracias, pipitas - esto es exactamente lo que estaba buscando. Sin embargo, tuve que especificar explícitamente '-sstdout =/dev/null', ya que'% sstderr' crearía un archivo con el mismo nombre en el directorio actual. Para referencia futura, aquí está el hilo de la lista de correo original sobre el parche: http://www.ghostscript.com/pipermail/gs-code-review/2001-March/000273.html –
Hay un error tipográfico allí. Debe ser '% stderr' sin la doble s –
Thx, @EdwardB, está en lo cierto. Lo arreglé. –