pdf到jpg的转换

时间:2010-12-27 20:13:16

标签: pdf imagemagick ghostscript

我通常以这种方式从PDF文件创建jpg缩略图:

exec('convert -contrast ./xyz.pdf[0] ./xyz.jpg');

另外,我也可以使用此变体来创建缩略图:

exec("/usr/bin/gs -q -dBATCH -dMaxBitmap=300000000 -dNOPAUSE -dSAFER -sDEVICE=jpeg -dJPEGQ=100 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r72 -dFirstPage=1 -dLastPage=1 -sOutputFile=./xyz.jpg ./xyz.pdf -c quit");

现在大多数缩略图都是在没有任何问题的情况下创建的。但是有些情况下根本没有创建缩略图。无论我使用哪两种变体。 PDF文件似乎“正常”(至少我可以打开并查看它们没有任何问题)。

有没有其他方法可以获得可用的缩略图(通过脚本)?

非常感谢

我收到的错误消息是:

[0] => Error: /limitcheck in --run--
[1] => Operand stack:
[2] =>    --nostringval--   --dict:9/18(L)--   --nostringval--
[3] => Execution stack:
[4] =>    %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1905   1   3   %oparray_pop   1904   1   3   %oparray_pop   1888   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1   1   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   false   1   %stopped_push   --nostringval--   %loop_continue   --nostringval--
[5] => Dictionary stack:
[6] =>    --dict:1159/1684(ro)(G)--   --dict:2/20(G)--   --dict:97/200(L)--   --dict:97/200(L)--   --dict:107/127(ro)(G)--   --dict:275/300(ro)(G)--   --dict:22/25(L)--   --dict:4/6(L)--   --dict:22/40(L)--   --dict:1/1(ro)(G)--   --dict:1/1(ro)(G)--
[7] => Current allocation mode is local
[8] => Last OS error: 2

2 个答案:

答案 0 :(得分:1)

添加-verbose标志。它会为您提供各种额外信息 我怀疑是导致您的问题的PDF文件的版本。 ImageMagick使用Ghostscript处理PDF。我不确定目前支持哪种版本的PDF Ghostscript,但大多数开源工具都不能处理最新版本的PDF文件。

编辑: 我想我应该添加这个注释,不确定您使用的exec或您使用的操作系统使用的脚本语言,但您可能需要解析错误流以从命令中获取信息。不确定详细输出是否写入错误流,但我很确定错误信息(无效的文件格式等)被写入错误流。

答案 1 :(得分:1)

我发布了一篇关于如何在http://www.jpedal.org/PDFblog/2010/09/how-do-i-find-out-the-pdf-version-used/找到PDF文件中使用的PDF版本的博客文章