2010-07-28 9 views
6

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í.

Respuesta

11

Si desea realmente silencio Ghostscript, modificar su línea de comando como este:

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

La adición de -sstdout=%stderr permite la salida estándar Postscript a ser redirigido, sin impedir a los conductores a escribir en la salida estándar. (Ese parche está en Ghostscript desde ~ 2001, 22 de septiembre)

+2

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 –

+1

Hay un error tipográfico allí. Debe ser '% stderr' sin la doble s –

+0

Thx, @EdwardB, está en lo cierto. Lo arreglé. –

Cuestiones relacionadas