如何使用黑色墨水以编程方式将PDF转换为灰度?

时间:2015-04-25 05:19:40

标签: pdf ghostscript grayscale cmyk

我正在尝试使用Ghostscript:

gs -sOutputFile=gray.pdf           \
   -sDEVICE=pdfwrite               \
   -sColorConversionStrategy=Gray  \
   -dProcessColorModel=/DeviceGray \
   -dNOPAUSE -dBATCH               \
   -dAutoRotatePages=/None         \
    color.pdf

但这不会导致仅使用黑色墨水:

gs -q  -o - -sDEVICE=inkcov gray.pdf

 0.15365  0.15365  0.15365  0.09419 CMYK OK

我可以使用Adobe产品成功进行转换,但我希望能够以更自动化的方式进行转换。

1 个答案:

答案 0 :(得分:1)

这(主要)是由于inkcov的运作方式。

您的PDF文件包含一个带有DeviceRGB混合空间的透明组。请注意,这实际上并不创建任何RGB输出,它只是意味着任何混合的对象必须在RGB空间中完成。因此,任何不在DeviceRGB中的东西(例如,灰色中的所有对象)必须首先转换为RGB,然后混合,然后转换为设备空间进行渲染。

由于inkcov是CMYK设备,这意味着必须将混合的RGB对象转换为CMYK。这导致不完美的黑色。除了将透明度的混合空间指定为RGB之外,PDF文件实际上不包含除灰色规格之外的任何内容。

看看Acrobat似乎做了什么,似乎是一个简单的解决方案,将透明度混合空间也改为DeviceGray。我们从以前的经验中知道,在不同空间中混合确实会导致渲染的差异。另一方面,改变所有颜色规格的色彩空间也是如此......

如果有时间做更多的调查,我可能会在下一个版本中走下去。