2010-07-28 15 views
6

Bir PDF dosyasının ilk sayfasını JPEG'ye kopyalamak için Ghostscript kullanıyorum. Geçici dosyalar oluşturmaktan kaçınmak için PDF verileri Ghoscripts'ın stdin'ine aktarılır ve JPEG stdout'ta "boşaltılır". Bu pipeline, GS'nin geçersiz PDF verileri almasına kadar bir çekicilik gibi çalışır: stderr'de beklediğim gibi tüm hata iletilerini bildirmek yerine, iletilerin bir kısmını stdout yerine yazıyor. Ghostscript'in hatalardan standart çıktıya yazılmasını engelleyin

yeniden oluşturmak için:

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

Not 2>/dev/null Yukarıdaki hata iletileri bastırmak değil. Ghostscript'in belgeleri, stdout'a yazmanın, stdout üzerindeki mesajları bastırmak için -q bayrağını gerektirdiği konusunda uyardı, ancak hala burada bir şey eksik görünüyor.

cevap

11

Eğer gerçekten sessizlik Ghostscript'e istiyorsanız, bu gibi komut satırı değiştirin:

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

-sstdout=%stderr eklenmesi hala izin sürücüler Stdout'a yazmak için ise Postscript stdout yeniden yönlendirilmek için izin verir. (Bu yama, ~ 2001, 22 Eylül'den beri Ghostscript içinde.)

+2

Teşekkürler, pipitas - tam olarak aradığım şey bu. '-sstdout =/dev/null' ifadesini açık bir şekilde belirtmeliydim, ancak, '% sstderr' geçerli dizinde benzer bir dosya oluşturduğundan. Gelecekte başvurmak için, düzeltme ekini gönderen orijinal posta listesi dizesi: http://www.ghostscript.com/pipermail/gs-code-review/2001-March/000273.html –

+1

Orada bir yazım hatası var. –

+0

Thx, @EdwardB olmadan,% stderr olmalıdır, siz haklısınız. Onardım. –

İlgili konular