如何从命令行将PDF转换为灰度,避免被栅格化?

Pan*_*nda 17 pdf ghostscript grayscale pdf-conversion pdf-manipulation

我正在尝试将此PDF转换为灰度:https://dl.dropboxusercontent.com/u/10351891/page-27.pdf

Ghostscript(v 9.10)与pdfwrite设备失败,"无法将色彩空间转换为灰色,将策略还原为LeaveColorUnchanged".信息.

我能够通过中间ps文件(使用gs,pdftops(v 0.24.3)或pdf2ps)转换它,但这个转换光栅化整个PDF.我尝试了很多其他的东西:使用qpdf(v 5.0.1)或pdftk(v 1.44)规范化PDF,将其转换为svg文件并通过Inkscape(v 0.48.4)转换回PDF ...似乎没什么上班.

我找到的唯一一个解决方案(在生产环境中不适合我)是在我的Mac上使用预览并手动或使用Automator脚本应用Quartz Gray Tone滤镜.

有人找到另一种工作方式吗?或者是否可以规范化PDF或修复问题以防止Ghostscript消息"无法转换颜色空间..."或以另一种方式强制颜色空间?

谢谢!

use*_*289 36

gs \
   -sDEVICE=pdfwrite \
   -sProcessColorModel=DeviceGray \
   -sColorConversionStrategy=Gray \
   -dOverrideICC \
   -o out.pdf \
   -f page-27.pdf
Run Code Online (Sandbox Code Playgroud)

此命令将您的文件转换为灰度(GS 9.10).

  • 它给出了这个输出,PDF仍然是彩色的.GPL Ghostscript 9.10:无法将颜色空间转换为灰色,将策略恢复为LeaveColorUnchanged. (2认同)
  • 这不是真正的灰度.如果我打印出墨水余量,则使用C,M和Y来制作灰色. (2认同)

Reu*_*mas 8

当天晚些时候,但最好的答案对我来说不适用于不同的文件.基本问题似乎是Ghostscript中的旧代码,其中有一个默认情况下未启用的更高版本.更多内容如下:http://bugs.ghostscript.com/show_bug.cgi?id = 694608

上面的页面还提供了一个适合我的命令:

gs \
  -sDEVICE=pdfwrite \
  -dProcessColorModel=/DeviceGray \
  -dColorConversionStrategy=/Gray \
  -dPDFUseOldCMS=false \
  -o out.pdf \
  -f in.pdf
Run Code Online (Sandbox Code Playgroud)