Converter um PDF em escala de cinza na linha de comando no FLOSS?

81

Tenho um arquivo PDF colorido e vou imprimi-lo e depois fotocopiá-lo em preto e branco. Gostaria de saber como é em preto e branco antes de copiá-lo. É possível 'escala de cinza' de um PDF na linha de comando usando o software livre? Estou usando o Ubuntu 9.10.

Rory
fonte

Respostas:

36

O ImageMagick pode fazer isso.

convert -colorspace GRAY color.pdf gray.pdf

através deste email

Iain
fonte
27
Isso reduz significativamente a qualidade. A solução @goyinux 'é melhor.
Johannes Weiss
7
O Convert realmente rasterizará o conteúdo do pdf. Portanto, a menos que o pdf já encapsule apenas imagens rasterizadas (por exemplo, um documento digitalizado), essa abordagem é um grande não-não.
M000
2
A menos que você use -density 400 -quality 100parâmetros - que funcionem bem
burtek
2
Realmente, há algo que o ImageMagick não possa fazer? :)
BalinKingOfMoria
-density 400 -quality 100cria arquivos enormes. +1 para a solução do @ goyinux.
Stanimir Stoyanov
156

Melhor:

gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -sColorConversionStrategy=Gray \
 -dProcessColorModel=/DeviceGray \
 -dCompatibilityLevel=1.4 \
 -dNOPAUSE \
 -dBATCH \
 input.pdf
Eroen
fonte
1
De acordo, isso fornece resultados muito melhores do que o convert, mas às vezes gira o pdf, o que é um pouco chato!
tdc 7/08/12
9
Só percebi que você pode desativar isso com-dAutoRotatePages=/None
tdc
1
Acabei de executar este comando em um PDF de 58 MB que já estava em escala de cinza (proveniente de um scanner) e a saída resultante era de 10 MB e parecia exatamente a mesma. Agradável!
Archie
1
Também funciona bem no Windows! Apenas remova o `\` e coloque tudo na mesma linha.
precisa saber é o seguinte
1
Na verdade, esta falha com este erroGPL Ghostscript 9.10: Unable to convert color space to Gray, reverting strategy to LeaveColorUnchanged.
jjmerelo
13

Aqui está um pequeno script que, além da conversão em escala de cinza, pode concatenar vários arquivos de entrada. Para usar o script, coloque as seguintes linhas em um arquivo, por exemplo "convert2gray.sh"

#!/bin/bash
gs -sOutputFile=converted.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dCompatibiltyLevel=1.4 -dNOPAUSE -dBATCH $@

e torná-lo executável

chmod +x convert2gray.sh

Então

./convert2gray.sh input1.pdf input2.pdf … lastinput.pdf

produzirá um único PDF "convert.pdf", que contém todas as páginas dos arquivos de entrada convertidos em escala de cinza.

Eu tive que imprimir vários arquivos em escala de cinza e achei a maneira mais fácil, pois você pode imprimir tudo após a inspeção com um comando.

ysis
fonte
FWIW, o pdftk também pode concatenar PDFs.
user1338062