¿Convertir un PDF a escala de grises en la línea de comando en FLOSS?

81

Tengo un archivo PDF en color, lo imprimiré y luego lo fotocopiaré en blanco y negro. Me gustaría saber cómo es en blanco y negro antes de fotocopiarlo. ¿Es posible 'escalar en escala de grises' un PDF en la línea de comandos usando software libre? Estoy usando Ubuntu 9.10.

Rory
fuente

Respuestas:

36

ImageMagick puede hacer esto.

convert -colorspace GRAY color.pdf gray.pdf

a través de este correo electrónico

Iain
fuente
27
Eso reduce significativamente la calidad. La solución de @goyinux es mejor.
Johannes Weiss
77
Convertir realmente rasterizará el contenido del pdf. Entonces, a menos que el pdf ya encapsule solo imágenes ráster (por ejemplo, un documento escaneado), este enfoque es un gran no-no.
m000
2
A menos que use -density 400 -quality 100parámetros - eso funciona bien
burtek
2
Realmente, ¿hay algo que ImageMagick no pueda hacer? :)
BalinKingOfMoria
-density 400 -quality 100crea archivos ENORMES. +1 para la solución de @ goyinux.
Stanimir Stoyanov
156

Mejor:

gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -sColorConversionStrategy=Gray \
 -dProcessColorModel=/DeviceGray \
 -dCompatibilityLevel=1.4 \
 -dNOPAUSE \
 -dBATCH \
 input.pdf
Eroen
fuente
1
De acuerdo, esto da resultados mucho mejores que la conversión, pero a veces gira el pdf, lo que es un poco molesto.
tdc
9
-dAutoRotatePages=/None
Me acabo de dar
1
Acabo de ejecutar este comando en un PDF de 58 MB que ya estaba en escala de grises (provenía de un escáner) y el resultado resultante era de 10 MB y se veía exactamente igual. ¡Agradable!
Archie
1
¡Funciona bien en Windows también! Simplemente elimine el `\ 'y ponga todo en la misma línea.
ixe013
1
De hecho, esto falla con este errorGPL Ghostscript 9.10: Unable to convert color space to Gray, reverting strategy to LeaveColorUnchanged.
jjmerelo
13

Aquí hay un pequeño script que, además de la conversión en escala de grises, puede concatenar múltiples archivos de entrada. Para usar el script, coloque las siguientes líneas en un archivo, por ejemplo, "convert2gray.sh"

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

y hacerlo ejecutable

chmod +x convert2gray.sh

Entonces

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

producirá un solo PDF "convertido.pdf", que contiene todas las páginas de los archivos de entrada convertidos a escala de grises.

Tuve que imprimir varios archivos en escala de grises y lo encontré de la manera más fácil, ya que puede imprimir todo después de la inspección con un solo comando.

ysis
fuente
FWIW, pdftk también puede concatenar archivos PDF.
user1338062