使用ghostscript一页后的颜色转换错误

时间:2013-04-12 14:09:12

标签: ghostscript

我正在使用Ghostscript 9.07使用批处理脚本将PDF文件从颜色转换为灰色。该脚本工作并从颜色转换为灰色,但仅适用于第一页。在我尝试的每个PDF(12个PDF)上,转换策略都会恢复为在第一页后保持颜色不变。

脚本:

C:\working-environment\gs9.07\bin\gswin64c -o C:\Test\converted.pdf -sDEVICE=pdfwrite -dLastPage=20 -dColorConversionStrategy=/Gray -dProcessColorModel=/DeviceGray C:\Test\original.pdf

注意:我在管理员的Windows 7 PC上运行脚本。 -dLastPage参数已设置,因为我有很长的PDF(500多页)。

错误:

Unable to convert color space to Gray. reverting strategy to LeaveColorUnchanged.

注意: 我使用了Oracle和Postgress手册,因为我也希望看到它的性能。

3 个答案:

答案 0 :(得分:3)

我和Ghostscript 9.06有同样的问题。在将文档传递给Ghostscript之前使用pdftops -level3sep将文档转换为CMYK颜色为我解决了这个问题。 bash中的示例:

gs -o converted.pdf -sDEVICE=pdfwrite -dColorConversionStrategy=/Gray \
  -dProcessColorModel=/DeviceGray <(pdftops -level3sep input.pdf -)

还可以尝试:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH \
  -dAutoRotatePages=/None -dUseCIEColor -sOutputFile=output.pdf input.pdf

答案 1 :(得分:2)

几乎可以肯定,“后续”页面正在使用一个颜色空间,当消息通知您时,无法将颜色空间转换为DeviceGray。没有看到文件(我真的不想要一个500多页的文件作为例子)我不能告诉你是什么导致你的问题。如果你能制作一个展示这个的小文件,我会看看它。

请注意,这不是错误,而是警告。错误会中止该工作。

下一版Ghostscript中的新颜色管理应该意味着不再发生这种情况。

[编辑]

对我来说,这个文件在第一页上发出警告,无论我是使用当前代码还是发布的9.07。由于色彩空间的问题发生在页面内容的后期,因此之前的所有内容确实都转换为灰色,但后续内容不是。

出现此问题是因为PDF文件使用/ Separation / All颜色空间在页面上绘制“打印机标记”。当前代码无法转换/ Separation颜色空间,也无法保留它,因此它将恢复为“保持颜色不变”。因为打印机标记是页面上的最后一个标记,并且因为/ All标记了所有的板,因此看起来是黑色的,所以看起来整个页面已被转换,但情况并非如此。

通过将文件拆分为3个单独的页面,您可以看到三个单独的“正确”页面,但实际上每个页面都已部分转换,并且仍包含/ Separation / All中的打印机标记。

Ghostscript Git存储库中的当前代码,当设置为使用新的CMS方案时,会在没有警告的情况下转换此文件,并且表面上正确处理多页文件,但此代码尚未完成。它应该与GS 9.08一起发布。

答案 2 :(得分:1)

要添加到此处已有的信息:这仍然是GS版本9.10中的一个问题,可能与EPS文件的存在有关。解决这个问题的方法是强制它使用旧的颜色管理代码。

gs -sDEVICE=pdfwrite -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray \
   -dOverrideICC -dPDFUseOldCMS=false

此错误报告包含更多信息:https://bugs.ghostscript.com/show_bug.cgi?id=694608