2

运行 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

4

2 回答 2

1

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

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

于 2013-01-02T08:46:53.827 回答
1

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

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

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

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

pdf_viewer_state vgstack[11];

至:

pdf_viewer_state vgstack[12];

于 2013-01-04T09:52:11.420 回答