调试ghostscript错误

时间:2013-01-01 22:21:45

标签: 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

2 个答案:

答案 0 :(得分:1)

这是整个输出,还是更多?这不是PostScript错误,因此错误代码“可能”是来自操作系统的系统错误代码。

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

答案 1 :(得分:1)

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

将堆栈大小增加一个显而易见的“快速破解”确实解决了问题,但显然这不是一个长期解决方案,不能保证其他一些疯狂文件不会超出此级别。

我建议您在http://bugs.ghostscript.com打开错误报告,将该组件标记为PDF Writer,这将使我成为受让人。正确地解决这个问题需要花费更多的时间。

如果你想暂时解决这个问题,并且不介意重建Ghostscript,请在​​第751行附近的ghostpdl / gs / base / gdevpdfx.h中更改:

pdf_viewer_state vgstack [11];

要:

pdf_viewer_state vgstack [12];