我正试图将PDF文档的页面转换为Linux机器上的图像文件。我正在使用Imagemagick,它非常适合英文PDF,例如:
http://arbsq.net/dev/test_en.pdf
但是对于阿拉伯语,对于以下文件http://arbsq.net/dev/test_pdf_ar_small.pdf(您可以清楚地看到它没有损坏),当我运行convert命令时,它会给出以下错误消息:

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

**警告:读取外部参照表时出错。
*文件已损坏。这可能是由转换或传输文件时出现的问题引起的。**
Ghostscript将尝试恢复数据。错误:/在中未定义
/BXlevel操作数堆栈:65 0 1--dict:6/6(ro)(G)--obj
执行堆栈:%IpPixEnter .RunExcRe2-NoStutVal--
--nostringval--nostringval--2%已停止推送--nostringval--nostringval--nostringval--false 1%已停止推送13%oparray弹出13%oparray弹出13%oparray弹出13
%奥帕雷·波普——诺斯特林瓦尔————诺斯特林瓦尔————诺斯特林瓦尔--
--nostringval--nostringval--nostringval--false 1%stopped\u push--nostringval--loop\u 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:不可恢复错误,退出代码1
转换:Postscript委托失败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,
本尼西亚,加利福尼亚州。保留所有权利。这个软件没有
保修:详情见公开文件。**警告:错误
读取外部参照表时发生。*文件已经
损坏。这可能是由于
正在转换或传输文件。**鬼脚本将尝试
以恢复数据。错误:/BXlevel操作数堆栈中未定义:
65 0 1--指令:6/6(ro)(G)--对象执行堆栈:
%1!
--nostringval--2%停止推送--nostringval--nostringval--nostringval--false 1%停止推送1 3%oparray弹出1 3%oparray弹出1 3%oparray弹出1 3%oparray弹出
--nostringval--nostringval--nostringval--nostringval--nostringval--false 1%停止_push--nostringval--loop%continue--nostringval--Dictionary堆栈:-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中提取图像?

最佳答案

您必须首先更新您的ghostscript,并以某种方式告诉imagemagick使用它(通过调整$PATH或delegate.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是从FirstPageLastPage的整数范围),因此在上面的示例中,单个输出文件将被称为out1.jpg
学分转到@mkl以获得更好的gs错误解释。

10-06 04:51