Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.

share|improve this question
up vote 24 down vote accepted

ImageMagick can do this.

convert -colorspace GRAY color.pdf gray.pdf

via this email

share|improve this answer
11  
That significantly reduces quality. @goyinux' solution is better. – Johannes Weiß Feb 12 '13 at 16:41
3  
Convert 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. – m000 Sep 19 '14 at 12:24
    
Unless you use -density 400 -quality 100 parameters - that works well – burtek Dec 13 '15 at 20:51

Better:

gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -sColorConversionStrategy=Gray \
 -dProcessColorModel=/DeviceGray \
 -dCompatibilityLevel=1.4 \
 -dNOPAUSE \
 -dBATCH \
 input.pdf
share|improve this answer
1  
Agreed, this gives much better results than convert, but sometimes it rotates the pdf which is a bit annoying! – tdc Aug 7 '12 at 18:08
6  
Just realised you can disable that with -dAutoRotatePages=/None – tdc Aug 7 '12 at 18:15
    
I 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! – Archie Dec 19 '12 at 2:33
    
Works well on Windows, too! Just remove the `\` and put everything on the same line. – ixe013 Aug 19 '14 at 4:23
    
In fact, this fails with this error GPL Ghostscript 9.10: Unable to convert color space to Gray, reverting strategy to LeaveColorUnchanged. – jjmerelo Dec 15 '15 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.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .