将带有阿拉伯语文本的PDF转换为Linux上的图像

时间:2013-06-19 11:49:47

标签: linux image pdf image-processing imagemagick

我正在尝试将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
  

**警告:读取XREF表时发生错误   * 文件已损坏。转换或传输文件时出现问题可能是由于 *造成的。 **   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--   字典堆栈: - dc: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 filename small-1.jpg'。

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

-bash-3.2$ gs test_pdf_ar_small.pdf
  

ESP Ghostscript 815.02(2006-04-19)版权所有(C)2004 artofcode LLC,   贝尼西亚,加利福尼亚州。版权所有。该软件附带NO   保证:有关详细信息,请参阅PUBLIC文件。 **警告:错误   在读取XREF表时发生。 * 该文件已经存在   破损。这可能是由于问题导致 *造成的   转换或转移文件。 ** 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-- Dictionary stack: - -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中提取图像的替代方法?

1 个答案:

答案 0 :(得分:1)

您必须先更新 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错误解释。