我在任何postscript文件中都有一些postscript资源文件用于绘制对象(flaggs)(灵感来自Terry Burton的postscriptbarcode)。
用于绘制标志的文件位于子文件夹Flaggs(不带扩展名.ps)以及一些帮助文件,
特别是sethexcolor
,定义一个函数sethexcolor
,从十六进制字符串设置RGB颜色。
我在子文件夹Flaggs上面有一个文件sample.ps
,代码为:
100 600 moveto
100 /square /Flaggs findresource exec % draw a square of size 100
showpage
文件square
包含代码:
1 dict
dup /sethexcolor dup /Flaggs findresource put
begin
/square {
/size exch def
currentpoint translate
/red (ff0000) def
red sethexcolor
% 1 0 0 setrgbcolor
} bind def
/square dup load /Flaggs defineresource pop
end
我正在使用ghostscript 9.10在Windows 7中工作。
使用命令行参数-P
调用Ghostscript以首先查找当前文件夹中的文件。
(在命令shell中可以使用gswin32c [-P] -h查看搜索路径)。通常情况下这很好(例如使用postscriptbarcode,见上文)。
但是这里不起作用:从sample.ps
开始,我收到一条错误消息:
Error: /undefined in sethexcolor
Operand stack:
(ff0000)
(使用1 0 0 setrgbcolor
设置RGB颜色后,它可以正常工作。)
如果我将red sethexcolor
更改为red /sethexcolor
或red //sethexcolor
,则不会显示错误消息,并绘制正方形 -
但是黑色,不是红色。
这个postscript代码有什么问题?
为什么无法在同一文件夹中运行square
调用函数sethexcolor
?
沃尔夫冈
答案 0 :(得分:2)
尝试
red //sethexcolor exec
使用直接名称(带//
)将在构造square
过程体时加载当前定义。由于sethexcolor
(大概)是一个过程,因此必须明确exec
才能执行。