J'utilise Ghostscript pour pixelliser la première page d'un fichier PDF au format JPEG. Pour éviter de créer des fichiers temp, les données PDF sont redirigées vers le fichier stdin de Ghoscripts et le fichier JPEG est "drainé" sur stdout. Ce pipeline fonctionne comme un charme jusqu'à ce que GS reçoive des données PDF invalides: Au lieu de signaler tous les messages d'erreur sur stderr comme je l'aurais prévu, il écrit encore certains des messages à stdout à la place.Empêche Ghostscript d'écrire des erreurs sur la sortie standard
Reproduire:
$ 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:
...
Notez le 2>/dev/null
ci-dessus ne supprime pas les messages d'erreur. La documentation de Ghostscript a déjà averti qu'écrire sur stdout nécessite l'indicateur -q
pour supprimer les messages sur stdout, mais il me semble toujours qu'il manque quelque chose ici.
Merci, pipitas - c'est exactement ce que je cherchais. J'ai dû spécifier explicitement '-sstdout =/dev/null', cependant,'% sstderr' créerait un fichier du même nom dans le répertoire courant. Pour référence future, voici le fil de la liste de diffusion d'origine discutant du correctif: http://www.ghostscript.com/pipermail/gs-code-review/2001-March/000273.html –
Il y a une faute de frappe là-bas. Il devrait être '% stderr' sans le double s –
Thx, @EdwardB, vous avez raison. Je l'ai corrigé. –