用PHP转换PDF和Imagick不能在live中工作

时间:2014-05-07 08:22:51

标签: php bash pdf imagick

我想将PDF的所有页面转换为JPEG。 PHP脚本在本地执行它应该执行的操作但在我们的实时服务器上失败。

$pdf = Zend_Pdf::load($file['tmp_name']);
echo 'Pages: '.sizeof($pdf->pages).'<br />';

for($pageCounter = 0; $pageCounter < $object->getNumberOfPages(); $pageCounter++) {
    $pagenumber = $pageCounter + 1;
    $currentfilename = $filename . "_$pagenumber.jpg";

    echo $thumbPath.$currentfilename.'<br />';

    echo $file['tmp_name']."[$pageCounter]<br />";

    $return; $out;
    exec("convert -density 250 '".$file['tmp_name']."[$pageCounter]' -quality 60 '$bigPath$currentfilename'", $out, $return);
    var_dump($return); echo '<br />'; echo var_dump($out); echo '<br />';

    exec("/usr/bin/convert -density 16 '/home/data/websites/www/meonline.be/public_html/images/magazines/".$file['name']."[$pageCounter]' -quality 60 '$thumbPath$currentfilename'", $out, $return);
    var_dump($return); echo '<br />';
}

我尝试通过明确指向/ usr / bin / convert&amp;来引用convert命令。在/ usr / local / bin目录/转换。我总是得到1(如果我指向错误的文件夹,则为127)并且输出数组始终为空。 显示所有文件夹,并设置了模式777。

这里是所有回音输出的摘要:

完整的exec命令:

convert -density 250 '/home/data/websites/www/meonline.be/public_html/images/magazines/HogeschoolPromotorenP-studenten.pdf[0]' -quality 60 '/home/data/websites/www/meonline.be/public_html/images/magazines/big/pLjB9_HogeschoolPromotorenP-studenten.pdf/hogeschoolpromotorenp-studenten_1399449783_1.jpg'

首先回复echo 'Pages: '.sizeof($pdf->pages).'<br />';

pages: 1

第二个回声echo $thumbPath.$currentfilename.'<br />';

/home/data/websites/www/meonline.be/public_html/images/magazines/thumb/pLjB9_HogeschoolPromotorenP-studenten.pdf/hogeschoolpromotorenp-studenten_1399449783_1.jpg

第三次回声echo $file['tmp_name']."[$pageCounter]<br />";

/home/data/websites/www/meonline.be/public_html/images/magazines/HogeschoolPromotorenP-studenten.pdf[0]

第四回声var_dump($return); echo '<br />'; echo var_dump($out); echo '<br />';

int(1) 
array(0) { }  

更新

有人在终端执行了我的命令并得到了以下回复:

convert: Postscript delegate failed `/home/data/websites/www/meonline.be/public_html/images/magazines/HogeschoolPromotorenP-studenten.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/713.
convert: no images defined `/home/data/websites/www/meonline.be/public_html/images/magazines/big/fs5Jd_HogeschoolPromotorenP-studenten.pdf/hogeschoolpromotorenp-studenten_1399455323_1.jpg' @ error/convert.c/ConvertImageCommand/3150.

我100%确定PDF文件存在,第二行抱怨图像没有被定义,但是这个命令应该为我创建它们。

1 个答案:

答案 0 :(得分:1)

如果有人正在寻找答案,问题实际上非常简单。

本地服务器安装了Ghostscript,实时服务器没有......

Download it herefollow the instructions here

就我而言,我无法访问实时服务器上的命令行。在这种情况下,使用PHP中的此命令检查/usr/bin/gs是否可用(在这种情况下已安装):

$return; $out;
exec("/usr/bin/gs 2>&1", $out, $return);
var_dump($return); echo '<br />'; echo var_dump($out); echo '<br />';