我有一个postscript文件,当我尝试将其转换为pdf或用postscript打开它时会出现以下错误 undefined in execform
我正在尝试解决此错误。但我发现没有解决方案。请帮我理解这个问题。 This is postscript file
答案 0 :(得分:1)
好的,开始几点观察;
该文件长8页,使用多种形式,并且它使用的第一个表单具有嵌套表单。这真的不适合作为示例文件,你期待其他程序员挖掘很多无关紧要的东西来帮助你。当您发布示例时,请尝试将其减少到重现问题所需的最低值。
您是否真的尝试自己调试此问题?如果是这样你做了什么? (为什么不从减少文件复杂性开始?)
我不想冒犯,但这是你最近发表的第三个相当天真的帖子,你有很多PostScript编程经验吗?有人为你提供过该语言的培训吗?看来你是代表一个商业组织工作,你应该和你的直线经理谈谈,如果还没有给你一些培训,你可以尝试安排一些培训。
PostScript程序会不给出您说明的错误
在execform中未定义
实际上,错误是特定于Ghostscript的错误消息:
错误:/ undefined in - .execform1 -
这就是.execform1
运算符(注意前导'。'表示Ghostscript内部运算符)。这一点非常重要,因为首先准确引用错误消息非常重要,其次是因为对于熟悉Ghostscript的人来说,它会告诉您在执行表单PaintProc时发生错误,而不是在执行execform
运算符时。
在大大降低了文件的复杂性之后,问题与使用Forms完全无关。违规表格执行如下代码:
2 RM
0.459396 w
[(\0\1\0\2)]435.529999 -791.02002 T
(这是第一次出现,以及错误发生的地方)
执行名为T
的过程,该过程定义为:
/T{neg _LY add /_y ed _LX add /_x ed/_BLSY _y _BLY sub D/_BLX _x D/_BLY _y D _x _y TT}bd
显然,这是使用prolog中定义的许多其他函数,但重要的是它执行TT
,其定义为:
/TT{/_y ed/_x ed/_SX _x _LX sub D/_SY _y _LY sub D/_LX _x D/_LY _y D _x _y m 0 _rm eq{ dup type/stringtype eq{show}{{ dup type /stringtype eq{show}{ 0 rmoveto}?}forall}?} if
1 _rm eq {gsave 0 _scs eq { _sr setgray}if 1 _scs eq { _sr _sg _sb setrgbcolor}if 2 _scs eq { _sr _sg _sb _sk setcmykcolor} if dup type/stringtype eq{true charpath }{{dup type /stringtype eq{true charpath } { 0 rmoveto}?}forall}? S grestore} if
2 _rm eq {gsave 0 _fcs eq { _fr setgray}if 1 _fcs eq { _fr _fg _fb setrgbcolor}if 2 _fcs eq { _fr _fg _fb _fk setcmykcolor} if dup type/stringtype eq{true charpath }{{dup type /stringtype eq{true charpath } { 0 rmoveto}?}
forall}? gsave fill grestore 0 _scs eq { _sr setgray}if 1 _scs eq { _sr _sg _sb setrgbcolor}if 2 _scs eq { _sr _sg _sb _sk setcmykcolor}if S grestore} if
在执行TT时保持的条件下(RM将_rm设置为2),我们将通过以下代码:
gsave 0 _fcs eq
但是,_fcs
最初是未定义的,仅在执行/fcs
函数时定义。您的程序永远不会执行/fcs
,因此_fcs
未定义,导致错误。
您是否有理由在PostScript表单中定义每个页面?这不是最佳的,如果解释器实际上支持表单,那么您正在使用VM没有用处(因为您只执行一次每个表单)。
如果因为原始PDF输入使用PDF Form XObjects,我建议您不要尝试在PostScript中重现这些内容。在PDF中重用Form XObjects是相当罕见的(确实发生了,但非重用很多更常见)。由于为所有未重复使用表单的文件描述每个PDF表单XObject的PostScript表单而导致的效率损失超出了实际上有价值的罕见情况的好处。