【发布时间】:2011-07-13 15:46:06
【问题描述】:
这个让我难过。
我需要将 PDF 转换为 jpg。我使用以下命令这样做:
$cmd = "convert ".$upload->pdf_name." -geometry 80x80 -density 80x80 -quality 100 ".$upload->thumb_name." 2>&1";
exec($cmd,$results);
$cmd_gif = "convert ".$upload->pdf_name." -geometry 640x640 -density 640x640 -quality 100 ".$upload->gif_name." 2>&1";
exec($cmd_gif,$results);
如果我上传主要是图像的 PDF,那么我没有问题。我得到缩略图和预览。 如果我上传一个主要是文本的 PDF,并且 print_r $results 我得到:
Array([0] => convert: no decode delegate for this image format `/tmp/magick-wSgqd1Vp-00000001' @ error/constitute.c/ReadImage/532.
[1] => convert: Postscript delegate failed `/var/www/vhosts/site/uploadedfiles/tmp/2_77.pdf': @ error/pdf.c/ReadPDFImage/664.
[2] => convert: no decode delegate for this image format `/tmp/magick-8foOHRJR' @ error/constitute.c/ReadImage/532.
[3] => convert: missing an image filename `/var/www/vhosts/site/uploadedfiles/tmp/2_77_thumb.jpg' @ error/convert.c/ConvertImageCommand/3015.
[4] => convert: no decode delegate for this image format `/tmp/magick-M-zHuvtS-00000001' @ error/constitute.c/ReadImage/532.
[5] => convert: Postscript delegate failed `/var/www/vhosts/site/uploadedfiles/tmp/2_77.pdf': @ error/pdf.c/ReadPDFImage/664.
[6] => convert: no decode delegate for this image format `/tmp/magick-rJ8G814k' @ error/constitute.c/ReadImage/532.
[7] => convert: missing an image filename `/var/www/vhosts/site/uploadedfiles/tmp/2_77.jpg' @ error/convert.c/ConvertImageCommand/3015. )
我安装了 Ghostscript 8.70 和 imagemagick 6.7.1-0 我的 linux 发行版是 CentOS release 5.6
【问题讨论】:
-
尝试直接使用 Ghostscript 而不是 imagemagick。这样,如果出现问题,至少您会从 Ghostscript 收到错误消息。至少尝试“gs /var/www/vhosts/site/uploadedfiles/tmp/2_77.pdf”并报告结果。 BTW 8.71 现在有点老了,当前版本是 9.02,我们将在几周后发布 9.03。
-
我更新到 9.02 并运行命令并得到了这个:
codegs /var/www/vhosts/site/uploadedfiles/tmp/2_77.pdf GPL Ghostscript 9.02 (2011-03-30)版权所有 (C) 2010 Artifex Software, Inc. 保留所有权利。此软件不提供任何担保:有关详细信息,请参阅文件 PUBLIC。处理页面 1 到 1。 Page 1 %%BoundingBox: 0 0 77 284 %%HiResBoundingBox: 0.000000 0.000000 76.535998 283.463991 >>showpage,按继续code 当我点击返回时,它转到 和我必须退出才能回到 bash -
这样就完全成功了,GS> 提示符就是交互式 PostScript 解释器。您可以使用 -dBATCH 和 -dNOPAUSE 来解决这个问题以及页面之间的暂停。所以无论问题是什么,它都特定于 ImageMagick 的调用。恐怕我无法帮助你,但如果你能找到它使用的命令行,并且如果它仍然失败,那么我建议在 bugs.ghostscript.com 的 Ghostscript Bugzilla 跟踪器中打开一个错误,并附上失败的 PDF 文件并给出了有问题的命令行。
-
@Roger990:您尝试使用哪种编程语言来实现这一目标? -- 你可以直接使用
convert命令行进行测试,添加-verbose开关吗?这将向您显示 ImageMagick 正在应用的确切 Ghostscript 命令。另外,听听 KenS 的建议;他是 Ghostscript 的开发者之一…… -
@pipitas:我正在使用 PHP 编程。当我在 putty 中运行命令时,我收到与上面显示的相同的错误消息。这仅适用于包含大量文本的 pdf。图形 PDF 可以神奇地转换。
标签: pdf text imagemagick ghostscript