使用 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 v11.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 系统在运行时安装libpng
、tiff
和jpeg
才能正常工作。你似乎符合这个条件...【参考方案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--”的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP(ghostscript) 将 PDF 转换为图像耗时太长
无法使用 ImageMagick 和 GhostScript 将 PDF 转换为 JPG