【问题标题】:ImageMagick - convert pdf to jpgImageMagick - 将 pdf 转换为 jpg
【发布时间】:2014-11-17 07:50:20
【问题描述】:

使用此代码,我尝试将上传的 pdf 转换为 jpg。

$newname = date("U");

$target = "../uploads/";
$temp = "../temp/";

if($_FILES["fileToUpload"]["type"] == "application/pdf") {
print "pdf";
if(move_uploaded_file( $_FILES["fileToUpload"]["tmp_name"], $temp.$_FILES['fileToUpload']['name'])) {
    print "pdf saved<br>";
} else {
    print "pdf not saved<br>";
}
$filename = basename( $_FILES['fileToUpload']['name'], ".pdf");
print "<br>".$filename."<br>";
if(file_exists($temp.$_FILES['fileToUpload']['name'])) {
    print "temp-file exist<br>";
    $konv = "/usr/local/bin/convert -debug 'All' ".$temp.$_FILES['fileToUpload']['name']." ".$target.$newname.".jpg 2>&1";
    print $konv."<br>";
    exec("convert -debug 'All' ".$temp.$_FILES['fileToUpload']['name']." ".$target.$newname.".jpg 2>&1", $output); 
    if ($return == "0") { echo "<br>Image generation sucssesful<br>"; } 
    else { echo "<br>Image generation failed<br>"; } 
    print_r($output);
    foreach ( $output as $file ) 
    print "$file<br>";
} else {
    print "temp-file doesn't exist";
}


}

PDF 保存在临时文件夹中,但图像转换失败,我得到的唯一错误消息是 1。

如何获得更多信息性错误消息?

【问题讨论】:

    标签: php pdf jpeg imagemagick-convert


    【解决方案1】:
    <?php
    $image = new imagick('file.pdf[0]');
    $image->setImageFormat('jpg');
    header('Content-Type: image/jpeg');
    echo $image;
    ?>
    

    其中 [0] 是页码。

    pdfinfo 会给你页码..

    exec('/path/to/pdfinfo '.$afilename.' | awk \'/Pages/ {print $2}\'', $output);
    

    【讨论】:

    • 如果不想翻页,可以和php.net/manual/en/function.imagecopymerge.php合并。
    • 感谢您的回答,但未找到“imagick”类。这就是我直接使用 Imagemagick 的原因
    • 您必须已经安装了 php5-imagick 才能使上述工作。有几个类似的问题:*.com/questions/9227014/…
    • 我在共享服务器上,所以我不确定是否可以让他们安装 Imagisk。如果我能得到更多的错误信息,那就太好了。我认为应该可以在没有 Imagick 的情况下进行转换。