后记/ setcmykcolor

问题描述 投票:0回答:1

我正在尝试从仅包含矢量(不包含栅格)的EPS文件中更改颜色。目前,我将它们转换为SVG,处理颜色,然后使用Inkscape将其转换回PDF或EPS。这可以完美工作,但不允许我仅使用RGB来应用CMYK着色。在调查了一下并找到了thisthis之类的答案后,我试图覆盖我的EPS文件使用的/setcmykcolor函数。您可以从here下载。

EPS看起来像这样:

enter image description here

而且我想将颜色转换为CMYK = 0 1 1 0,所以它看起来像这样:

enter image description here

在这种情况下,EPS文件是黑色的,但可以是任何其他颜色。我尝试在%%BeginProlog之后添加此内容,该内容应覆盖/setcmykcolor以始终将0 1 1 0用作CMYK颜色:

/osetcmykcolor {/setcmykcolor} bind def /setcmykcolor {pop [0 1 1 0] osetcmykcolor} def

或此:

/osetcmykcolor {/setcmykcolor} bind def /setcmykcolor {0 1 1 0 osetcmykcolor} def

但是一切仍然是黑色的。我知道/setcmykcolor是正确的功能,因为在绘制路径之前使用0 1 1 0 setcmykcolor会使它变成红色。我仔细阅读了Postscript编程手册,但我很难找出问题所在!

任何帮助将不胜感激!

postscript eps
1个回答
0
投票

如果我启动Ghostscript,那就去做:

GS> /osetcmykcolor /setcmykcolor load def
GS> /setcmykcolor {pop pop pop pop 0 1 1 0 osetcmykcolor} bind def
GS> (color.eps) run

然后,EPS将按照您的期望以'橙色'呈现。

[请注意,setcmykcolor接受4个参数,因此您必须弹出所有4个参数(尽管这不会造成颜色不足,只是在堆栈上留下垃圾)。

编辑EPS文件:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 564 454
%%HiResBoundingBox: 0.00 0.00 564.00 453.20
%%Creator: GPL Ghostscript 921 (eps2write)
%%LanguageLevel: 2
%%CreationDate: D:20200616000003-03'00'
%%Pages: 1
%%EndComments
%%BeginProlog
/osetcmykcolor /setcmykcolor load def
/setcmykcolor {pop pop pop pop 0 1 1 0 osetcmykcolor} bind def
/DSC_OPDFREAD true def

然后运行:

gs color1.eps

还会产生橙色文本。那么,您如何对其进行测试?

© www.soinside.com 2019 - 2024. All rights reserved.