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.

Respostas:


36

O ImageMagick pode fazer isso.

convert -colorspace GRAY color.pdf gray.pdf

através deste email


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

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.


FWIW, o pdftk também pode concatenar PDFs.
— user1338062
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.