【问题标题】:pdf to jpg conversionpdf到jpg的转换
【发布时间】:2010-12-27 20:13:15
【问题描述】:

我通常以这种方式从 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

【问题讨论】:

  • 您是否碰巧检查了无法使用的 PDF 是哪个 PDF 版本? (只需在 Acrobat 中打开并查看首选项)。另外,你在什么操作系统上运行它?如果这是 Windows,则操作系统错误 2 是“找不到文件”
  • 刚刚注意到您的 GS 调用命令行是 /usr/bin/gs,所以我假设您的操作系统是 *nix 风格的。在这种情况下,操作系统错误代码 2 是找不到文件。我仍然怀疑该错误是 PDF 版本问题,但无论如何我都会问这个问题,您是否总是使用 ./xyz.pdf[0] 运行转换命令,或者您有时是否将 0 替换为不同的页码(例如 5)。 5 对应于第 6 页,如果 PDF 少于 6 页,则此操作将失败并出现文件未找到错误。

标签: pdf imagemagick ghostscript


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 2016-09-17
      • 2010-12-11
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      相关资源
      最近更新 更多