2010-07-28 7 views
6

Sto utilizzando Ghostscript per rasterizzare la prima pagina di un file PDF in JPEG. Per evitare la creazione di file temporanei, i dati PDF vengono reindirizzati allo stdin di Ghcrripts e il file JPEG viene "svuotato" sullo stdout. Questa pipeline funziona come un incantesimo fino a quando GS riceve dati PDF non validi: invece di segnalare tutti i messaggi di errore su stderr come mi sarei aspettato, scrive comunque alcuni dei messaggi su stdout.Impedisci a Ghostscript di scrivere errori sull'output standard

di riprodursi:

$ 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: 
... 

Annotare il 2>/dev/null sopra non elimina i messaggi di errore. La documentazione di Ghostscript già avvertiva che scrivere su stdout richiede il flag -q per sopprimere i messaggi sullo stdout, ma mi sembra che manchi ancora qualcosa qui.

risposta

11

Se si vuole veramente silenzio Ghostscript, modificare la riga di comando in questo modo:

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

L'aggiunta di -sstdout=%stderr permette Postscript stdout per essere reindirizzato, pur consentendo ai conducenti di scrivere sullo standard output. (Quella patch è in Ghostscript dal ~ 2001, 22 settembre)

+2

Grazie, pipitas - questo è esattamente quello che stavo cercando. Ho dovuto specificare esplicitamente '-sstdout =/dev/null', tuttavia, dato che'% sstderr' creerebbe un file con nome simile nella directory corrente. Per riferimento futuro, ecco il thread originale della mailing list che discute la patch: http://www.ghostscript.com/pipermail/gs-code-review/2001-March/000273.html –

+1

C'è un errore di battitura laggiù. Dovrebbe essere '% stderr' senza il doppio s –

+0

Thx, @EdwardB, sei corretto. L'ho riparato. –

Problemi correlati