使用 Ghostscript 将 PDF 转换为打印支持的格式时出现“错误:/ioerror in --filter--”

Posted

技术标签:

【中文标题】使用 Ghostscript 将 PDF 转换为打印支持的格式时出现“错误:/ioerror in --filter--”【英文标题】:"Error: /ioerror in --filter--" in converting PDF to print supported format with Ghostscript 【发布时间】:2011-02-03 03:23:02 【问题描述】:

我将在 HP-UX 系统中使用 Ghostscript 转换 PDF 文件,以便我可以在 LX 和 LQ 打印机中打印这些文件。对于 LX 打印机——例如,我使用这个命令:

gs -q -dBATCH -dSAFER -r120x216 -dNOPAUSE -sDEVICE=eps9high -sPAPERSIZE=letter -sOutputFile=TEST.TEMP.pdf.LXPRINT TEST.pdf

每个 PDF 文件都可以正常工作。但每次我转换包含图像的 PDF 文件时,都会出现如下错误:

Error: /ioerror in --filter--
Operand stack:
   --dict:6/15(L)--   false   --dict:9/17(L)--   --nostringval--   --nostringval--
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1878   1   3   %oparray_pop   1877   1   3   %oparray_pop   1861   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1   2   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   false   1   %stopped_push   --nostringval--   %loop_continue   --nostringval--   3187   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   1749   6   13   %oparray_pop
Dictionary stack:
   --dict:1151/1684(ro)(G)--   --dict:1/20(G)--   --dict:75/200(L)--   --dict:75/200(L)--   --dict:108/127(ro)(G)--   --dict:288/300(ro)(G)--   --dict:22/25(L)--   --dict:6/8(L)--   --dict:21/40(L)--   --dict:1/1(ro)(G)--   --dict:1/1(ro)(G)--   --dict:1/1(ro)(G)--   --dict:7/15(L)--
Current allocation mode is local
Last OS error: 2
GNU Ghostscript 0.08.71: Unrecoverable error, exit code 1

如您所见,我使用的是 Ghostscript 8.71.1,我的系统是 HP-UX Itanium v​​11.23。

我已经安装了所有依赖项——jpeg、libXrender 和所有东西——但没有任何改变。

【问题讨论】:

【参考方案1】:

您从哪里获得二进制文件?也许打包器没有启用图像渲染(或手动禁用它),也许他编译了一个静态链接的二进制文件?

您可以从源代码中自己编译吗?

如果您自己编译,您可能需要编辑一些 makefile 以启用图像渲染。注意 makefile 中的 *.dev 关键字。有些 ar 默认被注释掉了。

编辑:您的 PDF 有什么特别之处吗?您是否交叉测试了不同操作系统平台(例如 Linux 或 Windows)上的 Ghostscript 8.71 是否可以处理您的 PDF?

【讨论】:

感谢您的回答。我从hpux.connect.org.uk/hppd/hpux/PostScript/ghostscript-8.71.1 获得了二进制文件。我怎么知道这个二进制文件是否启用了图像渲染?您能否建议 makefile 的哪一部分启用图像渲染。 您提供的链接似乎表明 JPEG 和 PNG 支持确实已编译到您的 Ghostscript HPUX 二进制文件中。但是他们也说您还需要在您的 HPUX 系统在运行时安装libpngtiffjpeg 才能正常工作。你似乎符合这个条件...【参考方案2】:

如果您仍然遇到问题。 我遇到了完全相同的问题,最终找到了一个非常小的 /tmp 挂载

测试

mount -o bind /path/to/space/ /tmp

导致上面的问题消失了,再玩了一下发现

export TMPDIR="/path/to/space/";

同样有效

我正在使用 Debian Lenny 和 ImageMagick 6.3.7 我也考虑过

How do I change temp path of imagemagick?

但它对我不起作用,我不想重新编译。

【讨论】:

【参考方案3】:

就我而言,这是 tmp 文件夹和 imagemagic 在那里创建的文件的问题。 imagic-一些哈希字符我添加了“-limit memory 512”来限制内存消耗并删除了临时文件。这解决了这个问题。

【讨论】:

以上是关于使用 Ghostscript 将 PDF 转换为打印支持的格式时出现“错误:/ioerror in --filter--”的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ghostscript 将 TIFF 转换为 PDF

Ghostscript将pdf转换为方向错误的pcl

使用 PHP(ghostscript) 将 PDF 转换为图像耗时太长

无法使用 ImageMagick 和 GhostScript 将 PDF 转换为 JPG

Ghostscript:将 PDF 转换为 CMYK EPS

使用 Ghostscript 将 PDF 转换为 PDF/A 时出错