Search code examples
pdfghostscriptgrayscalepdf-conversionpdf-manipulation

How to convert a PDF to grayscale from command line avoiding to be rasterized?


I'm trying to convert to grayscale this PDF: https://dl.dropboxusercontent.com/u/10351891/page-27.pdf

Ghostscript (v 9.10) with pdfwrite Device fails with a "Unable to convert color space to Gray, reverting strategy to LeaveColorUnchanged." message.

I'm able to convert it through an intermediary ps file (using gs, pdftops (v 0.24.3) or pdf2ps) but this convertion rasterize the whole PDF. I tryed a lot of other things: normalize the PDF using qpdf (v 5.0.1) or pdftk (v 1.44), transform it to a svg file and back to a PDF via Inkscape (v 0.48.4)... nothing seems to work.

The only one solution I found (which is not suitable for me in production environment) is to use Preview on my Mac and apply a Quartz Gray Tone filter manually or with an Automator script.

Anyone find another working way to do it? Or is it possible to normalize the PDF or fix the issue to prevent the Ghostscript message "Unable to convert color space..." or to force the color space in another way?

Thanks!


Solution

  • gs \
       -sDEVICE=pdfwrite \
       -sProcessColorModel=DeviceGray \
       -sColorConversionStrategy=Gray \
       -dOverrideICC \
       -o out.pdf \
       -f in.pdf
    

    This command converts file in.pdf to grayscale (GS 9.10).