调试ghostscript错误



在运行ghostscript并转换pdf文件时出现以下错误:

 GPL Ghostscript 9.05: Unrecoverable error, exit code 255

我如何开始找出问题所在?

更新:下面是我的命令:

gs -dNOPAUSE -dBATCH -sPAPERSIZE=letter -sDEVICE=pdfwrite -sOutputFile=out.pdf -dPDFFitPage in.pdf

当我用png16而不是pdfwrite运行它时,一切都很顺利。我认为问题出在设备上,但我仍然不知道如何解决。这里的目标是将文档强制为字母大小。

链接到文件:http://temp-share.com/show/FHKdql0i6/672b9ff65ff286352936d4e9975389bb

好的,我已经调试了这个,它基本上是Ghostscript pdfwrite设备的限制。它只允许对象最多10个嵌套层(声明了一个固定大小的堆栈),而这个Cairo文件中相当疯狂的嵌套层打破了这个限制。

将堆栈大小增加1的"快速hack"确实解决了这个问题,但显然这不是一个长期的解决方案,不能保证其他一些疯狂的文件不会嵌套到这个级别以上。

我建议你在http://bugs.ghostscript.com上打开一个bug报告,将组件标记为PDF Writer,这将使我成为受让人。正确地修复这个问题将花费比我目前可用的时间更多的时间。

如果你现在想破解这个问题,并且不介意重新构建Ghostscript,在ghostpdl/gs/base/gdevpdfx.h中大约751行更改:

pdf_viewer_state vgstack [11],

:

pdf_viewer_state vgstack [12],

这是全部输出,还是还有更多?这不是PostScript错误,因此错误代码"可能"是来自操作系统的系统错误代码。

可能的原因是创建输出文件或读取输入文件的权限无效。注意pdfwrite设备(与png16m设备不同)需要写入临时文件,它使用特定于操作系统的临时文件方法。如果它不能写入临时文件,则会导致错误。如果以根用户身份运行该进程,会发生什么情况?

最新更新