Używam Ghostscript do rasteryzacji pierwszej strony pliku PDF do JPEG. Aby uniknąć tworzenia plików tymczasowych, dane PDF są przesyłane do wejścia standardowego Ghoscripts, a JPEG jest "drenażowany" na standardowe wyjście. Ten potok działa jak zaklęcie, dopóki GS nie otrzyma nieprawidłowych danych PDF: Zamiast zgłaszać wszystkie komunikaty o błędach na stderr, jak bym się spodziewał, w dalszym ciągu zapisuje niektóre z komunikatów do stdout stdout.Zapobiegaj pisaniu błędów przez Ghostscript na standardowym wyjściu
Aby odtworzyć:
$ 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:
...
Zanotuj 2>/dev/null
powyżej nie tłumić komunikaty o błędach. Dokumentacja Ghostscript ostrzegła już, że pisanie na standardowe wyjście wymaga flagi -q
do tłumienia wiadomości na standardowe wyjście, ale nadal wydaje mi się, że czegoś tu brakuje.
Dzięki, pipitas - dokładnie tego szukałem. Musiałem jednak wyraźnie określić '-sstdout =/dev/null', ponieważ'% sstderr' utworzyłby plik o tej samej nazwie w bieżącym katalogu. Na przyszłość, tutaj jest oryginalny wątek z listą dyskusyjną omawiającą łatkę: http://www.ghostscript.com/pipermail/gs-code-review/2001-March/000273.html –
Jest tam literówka. Powinien być '% stderr' bez podwójnego s –
Thx, @EdwardB, masz rację. Naprawiłem to. –