Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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

3 Answers 3

up vote 16 down vote accepted

ImageMagick can do this.

convert -colorspace GRAY color.pdf gray.pdf

via this email

share|improve this answer
4  
That significantly reduces quality. @goyinux' solution is better. –  Johannes Weiß Feb 12 '13 at 16:41
    
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 at 12:24

Better:

gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -sColorConversionStrategy=Gray \
 -dProcessColorModel=/DeviceGray \
 -dCompatibilityLevel=1.4 \
 -dNOPAUSE \
 -dBATCH \
 input.pdf
share|improve this answer
    
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
2  
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 at 4:23

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.