使用ImageMagick的转换(和PHP)将PDF页面转换为图像的问题

时间:2010-03-23 11:29:47

标签: php imagemagick

我正在尝试创建一个小型Web服务,将PDF文件转换为一系列图像。

当我通过ssh连接到[Mediatemple(gs)]服务器时运行convert /full/path/to/source.pdf full/path/to/target.jpg,一切正常。

通过PHP的exec()函数执行相同的命令时,只转换PDF文件的前几页。有时剩余的页面是0长度的jpg文件,有时它们根本不出现。

此外,第一页的底部区域有时是黑色的,就像转换在页面中途停止一样。

可能导致此问题的原因是什么?

更新

我正在使用set_time_limit(0)。

如果我通过SSH连接,并运行命令convert -limit area 90 ...,它将在大约成功完成。 30秒。当通过PHP-s exec()执行相同操作时,它运行约90秒并产生损坏的图像(如上所述)作为输出。

是否有一种简单的方法可以使用与SSH相同的权限和资源来运行转换任务?

此外,由于解决服务器问题一定非常令人沮丧,我无法控制 - 是否有一个良好的现有Web服务(API)可以将PDF转换为图像?

2 个答案:

答案 0 :(得分:0)

重新更新:你能尝试转换一个小小的PDF来看看它是否是一个内存问题?

此外,ImageMagick有一个debug命令行选项:

convert -debug "All" /full/path/to/source.pdf full/path/to/target.jpg

我认为它调试到stdout,你必须捕获它记录的内容并输出它。 手动here

另外,我认为要转换PDF,ImageMagick需要调用ghostscript(我认为二进制文件是gs)。您可以尝试确保可以使用PHP运行的用户的权限进行调用吗?如果不是,ImageMagick 应该返回错误,但你永远不知道。

答案 1 :(得分:0)

试图让它在共享服务器上运行,并将应用程序移动到另一台服务器 - 现在一切正常。

我认为服务器资源限制(主要是一些内存限制)干扰了ImageMagick,并且以非常不一致的方式这样做了。限制ImageMagick的内存使用仍然会产生错误,并且无法成功转换文件。