繁体   English   中英

将附言解析为pdf时出错

[英]Error in Parsing the postscript to pdf

当我尝试将其转换为pdf或使用Postscript打开它时,我有一个postscript文件,它在execform中给出以下错误未定义

我正在尝试解决此错误。 但是我没有找到解决方案。 请帮助我理解问题。 这是后记文件

好的,因此开始一些观察;

该文件长8页,使用多种形式,并且使用的第一种形式具有嵌套形式。 这确实不适合作为示例文件,您希望其他程序员通过大量无关紧要的工作来帮助您。 发布示例时,请尝试将其减少到仅重现该问题所需的最低限度。

您是否实际尝试自己调试此问题? 如果是这样,您做了什么? (为什么不从降低文件复杂度开始?)

我不想冒犯他人,但这是您最近发布的第三篇比较幼稚的文章,您对PostScript编程有丰富的经验吗? 有没有人为您提供过这种语言的培训? 看来您是在代表某个商业组织工作,应该与您的直属经理谈谈,并尝试安排一些培训(如果尚未接受培训)。

PostScript程序没有给出您指出的错误

在execform中未定义

实际上,该错误是Ghostscript特定的错误消息:

错误:-。execform1--中未定义

因此,这就是.execform1运算符(请注意.execform1的“。”表示Ghostscript内部运算符)。 这仅是重要的,因为首先,准确地引用错误消息很重要,其次,对于熟悉Ghostscript的人,它告诉您错误是在执行Form PaintProc而不是在执行execform运算符时发生的。

在大大降低了文件的复杂性之后,问题绝对与使用窗体无关。 令人反感的表单执行如下代码:

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

显然,这使用了序言中定义的许多其他功能,但重要的是它执行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表单中定义每个页面是有原因的? 这不是最佳选择,如果解释器实际上支持Forms,那么您将无用的VM用光(因为您只执行一次每个Form)。

如果是因为原始PDF输入使用PDF Form XObjects,则建议您不要尝试在PostScript中重现它们。 PDF格式XObject的再利用是相当罕见的(它确实发生,但不重新使用更为普遍)。 由于为每个未重复使用该表单的所有文件的每个PDF Form XObject描述了PostScript表单而导致的效率损失超过了这种情况实际上有价值的罕见情况所带来的好处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM