一尘不染

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

linux

我读这篇文章了解如何将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。


阅读 346

收藏
2020-06-07

共1个答案

一尘不染

如果您使用的是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,0RGB,设置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。

2020-06-07