0

我正在尝试将 PDF 文档的页面转换为 Linux 机器上的图像文件。我正在使用 Imagemagick,它非常适用于英文 PDF,例如这个:

http://arbsq.net/dev/test_en.pdf

但是对于阿拉伯语,对于以下文件http://arbsq.net/dev/test_pdf_ar_small.pdf(您可以清楚地看到它没有损坏),当我运行转换命令时,它会给出以下错误消息:

-bash-3.2$ convert test_pdf_ar_small.pdf[1] small-1.jpg

** 警告:读取外部参照表时出错。
*
文件已损坏。这可能是由于 * 转换或传输文件时出现问题。** Ghostscript 将尝试恢复数据。错误:/BXlevel 操作数堆栈中的/未定义:65 0 1 --dict:6/6(ro)(G)-- obj 执行堆栈:%interp_exit .runexec2 --nostringval--
--nostringval-- --nostringval- - 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1 3 %oparray_pop 1 3 %oparray_pop 1 3
%oparray_pop --nostringval-- --nostringval-- --nostringval--
--nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push --nostringval-- %loop_continue --nostringval-- 字典堆栈:--dict:1129/1686(ro)(G)-- -dict:0/20(G)--
--dict:107/200(L)-- --dict:107/200(L)-- --dict:104/127(ro)(G)-- --dict:241/347(ro)( G)-- --dict:18/24(L)-​​- 当前分配模式是本地 ESP Ghostscript 815.02: Unrecoverable error, exit code 1 convert: Postscript delegate failed test_pdf_ar_small.pdf'. convert: missing an image filenamesmall-1.jpg'。

我尝试使用ghostscript打开PDF,它似乎给出了同样的错误:

-bash-3.2$ gs test_pdf_ar_small.pdf

ESP Ghostscript 815.02 (2006-04-19) 版权所有 (C) 2004 artofcode LLC, Benicia, CA。版权所有。此软件不提供任何担保:有关详细信息,请参阅文件 PUBLIC。 ** 警告:读取外部参照表时出错。*文件已损坏。这可能是由于 * 转换或传输文件时出现问题。** Ghostscript 将尝试恢复数据。错误:/BXlevel 操作数堆栈中的/未定义:
65 0 1 --dict:6/6(ro)(G)-- obj 执行堆栈:
%interp_exit .runexec2 --nostringval-- --nostringval--
--nostringval- - 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop
--nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push --nostringval-- %loop_continue --nostringval-- 字典堆栈:- -dict:1117/1686(ro)(G)-- --dict:0/20(G)-- --dict:107/200(L)-- --dict:107/200(L)-- --dict:104/127(ro)(G)-- --dict:241/347(ro)(G)-- --dict:18/24(L)-​​- 当前分配模式是本地ESP Ghostscript 815.02 :不可恢复的错误,退出代码 1

我尝试使用 Perl 的图像魔法,但没有出现同样的错误。

但是,当我尝试在 Windows 上使用 ghostscript 时,它能够打开文件,尽管有一些警告。所以问题是在 Linux 上打开这些 PDF。

有没有办法处理这些错误,或者从 PDF 中提取图像的替代方法?

4

1 回答 1

1

您必须先更新您的ghostscript并以某种方式告诉imagemagick使用它(通过调整$PATHdelegate.xml)。

但是,您也可以直接使用ghostscript,下面是一个示例:

gs -dNOPAUSE -sDEVICE=jpeg -dFirstPage=1 -dLastPage=1 \
    -sOutputFile=out%d.jpg \
    -dJPEGQ=100 -r300x300 -q \
    test_pdf_ar_small.pdf -c quit

请注意该-sOutputFile选项,它是输出文件名的模板(其中是从到%d的整数范围),因此在上面的示例中,将调用单个输出文件。FirstPageLastPageout1.jpg

学分转到@mkl 以获得更好的 gs 错误解释。

于 2013-06-19T15:12:37.450 回答