覆盖后记 /setcmykcolor
Overriding postscript /setcmykcolor
我正在尝试更改仅包含矢量(不包含光栅)的 EPS 文件的颜色。目前,我将它们转换为 SVG,处理颜色,然后使用 Inkscape 将它们转换回 PDF 或 EPS。这非常有效,但不允许我应用 CMYK 着色,只能应用 RGB。经过一些调查并找到 this or this I'm trying to override the /setcmykcolor
function my EPS file uses. You can download it from here.
之类的答案
EPS 看起来像这样:
我想将颜色转换为 CMYK = 0 1 1 0,所以它看起来像这样:
在这种情况下,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 编程手册,但我很难弄清楚这里出了什么问题!
如有任何帮助,我们将不胜感激!
如果我启动 Ghostscript 然后执行:
GS> /osetcmykcolor /setcmykcolor load def
GS> /setcmykcolor {pop pop pop pop 0 1 1 0 osetcmykcolor} bind def
GS> (color.eps) run
然后 EPS 按您的预期在 'orange' 中呈现。
请注意,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
还会生成橙色文本。那么你如何测试它?
我正在尝试更改仅包含矢量(不包含光栅)的 EPS 文件的颜色。目前,我将它们转换为 SVG,处理颜色,然后使用 Inkscape 将它们转换回 PDF 或 EPS。这非常有效,但不允许我应用 CMYK 着色,只能应用 RGB。经过一些调查并找到 this or this I'm trying to override the /setcmykcolor
function my EPS file uses. You can download it from here.
EPS 看起来像这样:
我想将颜色转换为 CMYK = 0 1 1 0,所以它看起来像这样:
在这种情况下,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 编程手册,但我很难弄清楚这里出了什么问题!
如有任何帮助,我们将不胜感激!
如果我启动 Ghostscript 然后执行:
GS> /osetcmykcolor /setcmykcolor load def
GS> /setcmykcolor {pop pop pop pop 0 1 1 0 osetcmykcolor} bind def
GS> (color.eps) run
然后 EPS 按您的预期在 'orange' 中呈现。
请注意,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
还会生成橙色文本。那么你如何测试它?