I have a colour PDF file, and I'm going to print it out and then photocopy it in black and white. I'd like to know what it's like in B&W before photocopying it. Is it possible to 'greyscale' a PDF on the command line using free software? I'm using Ubuntu 9.10.
3 Answers
-
37That significantly reduces quality. @goyinux' solution is better. Feb 12, 2013 at 16:41
-
8Convert will actually rasterize the contents of the pdf. So unless the pdf already encapsulates only raster images (e.g. a scanned document), this approach is a big no-no.– m000Sep 19, 2014 at 12:24
-
4Unless you use
-density 400 -quality 100
parameters - that works well– burtekDec 13, 2015 at 20:51 -
2Really, is there anything ImageMagick can't do? :) Aug 18, 2017 at 3:02
-
1
-density 400 -quality 100
creates HUGE files. +1 for @goyinux's solution. Jun 27, 2018 at 10:45
Better:
gs \
-sOutputFile=output.pdf \
-sDEVICE=pdfwrite \
-sColorConversionStrategy=Gray \
-dProcessColorModel=/DeviceGray \
-dCompatibilityLevel=1.4 \
-dNOPAUSE \
-dBATCH \
input.pdf
-
2Agreed, this gives much better results than convert, but sometimes it rotates the pdf which is a bit annoying!– tdcAug 7, 2012 at 18:08
-
21
-
2I just ran this command on a 58MB PDF that was already greyscale (came from a scanner) and the resulting output was 10MB and looked exactly the same. Nice!– ArchieDec 19, 2012 at 2:33
-
1Works well on Windows, too! Just remove the `\` and put everything on the same line.– ixe013Aug 19, 2014 at 4:23
-
1In fact, this fails with this error
GPL Ghostscript 9.10: Unable to convert color space to Gray, reverting strategy to LeaveColorUnchanged.
– jjmereloDec 15, 2015 at 17:56
Here’s a little script which in addition to the grayscale conversion can concatenate multiple input files. To use the script, put the following lines in a file, e.g. "convert2gray.sh"
#!/bin/bash
gs -sOutputFile=converted.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dCompatibiltyLevel=1.4 -dNOPAUSE -dBATCH $@
and make it executable
chmod +x convert2gray.sh
Then
./convert2gray.sh input1.pdf input2.pdf … lastinput.pdf
will produce a single PDF "converted.pdf", which contains all pages from the input files converted to grayscale.
I had to print out mutliple files all in grayscale and found this the easiest way, since you can print out everything after inpection with one command.