将没有任何图像的PDF转换为CMYK

时间:2016-03-31 08:59:44

标签: linux pdf ghostscript cmyk

我读了this post关于如何将PDF转换为CMYK,但是当我尝试接受的解决方案时

gs \
    -o test-cmyk.pdf \
    -sDEVICE=pdfwrite \
    -sProcessColorModel=DeviceCMYK \
    -sColorConversionStrategy=CMYK \
    -sColorConversionStrategyForImages=CMYK \
    test.pdf

如果我的原始pdf不包含图片,我没有获得带有CMYK色彩空间的pdf。如果我向其添加图像,我会得到正确的结果(使用identify检查)。

例如,如果我使用一个矩形创建带有inskcape的svg,将其导出为pdf,然后使用ghostscript命令,它仍会在sRBG颜色空间中获得pdf。但是,如果我在我的svg中添加一个图像,它可以正常工作。

gs中处理该问题的正确选项是什么?我的版本是9.19。

编辑:KenS发现问题:identify的报告错误。所以我添加了我安装的ImageMagick版本号:6.9.3。

1 个答案:

答案 0 :(得分:0)

如果您使用的是Ghostscript的最新版本,那么您既不需要-sColorConversionStrategyForImages(顺便说一下,这不是真正的Ghostscript控件),也不需要-sProcessColorModel。如果您没有使用Ghostscript的最新版本,请更新....

除此之外,由于您没有提供示例,或者告诉我们您正在使用哪个版本的GS,或者在哪个平台上,它实际上无法再进一步说明。

[在提供文件后添加]

原始PDF文件包含此文件作为页面的内容流:

stream
q
0 0 0 rg /a0 gs
109.715 637.714 262.855 -260.57 re f
Q
endstream

这样可以保存graphcis状态,将颜色设置为0,0,0 RGB,设置alpha为1的特定图形状态,绘制一个矩形,然后用当前颜色填充它,然后恢复图形状态。

然后我使用了这个命令行:

./gs -sDEVICE=pdfwrite -sOutputFile=CMYK.pdf -sColorConversionStrategy=CMYK test.pdf

生成的PDF文件将其作为页面内容流:

stream
q 0.1 0 0 0.1 0 0 cm
/R7 gs
0.722 0.675 0.671 0.882 k
1097.15 3771.44 2628.55 2605.7 re
f
Q
endstream

因此,保存图形状态,将CTM乘以x和y的0.1倍,设置特定的图形状态,将颜色设置为0.722,0.675,0.671,0.882 CMYK,创建一个矩形,用当前颜色填充它恢复图形状态。

因此生成的PDF文件将所有颜色定义为CMYK值。

也许你的问题在于identify而不是Ghostscript。