使用PHP将PDF转换为JPG图像

时间:2012-11-28 08:13:22

标签: php pdf imagemagick jpeg

我正在使用ImageMagik尝试将PDF的内容转换为JPG,但不断获得一个空的jpg。我已经确定所有测试中的perms都是777,所以我有点迷失了如何继续。

这是我正在运行的脚本

<?php

    exec('convert testfile.pdf output.jpg', $output, $return_var);

?>

5 个答案:

答案 0 :(得分:6)

试试这个。

<?php
    $pdf = 'testfile.pdf';
    $save = 'output.jpg';

    exec('convert "'.$pdf.'" -colorspace RGB -resize 800 "'.$save.'"', $output, $return_var);

?>

答案 1 :(得分:1)

使用二进制的绝对路径,如下所示:

exec('/usr/bin/convert testfile.pdf output.jpg', $output, $return_var);

但请确保您的convert二进制文件实际上在/usr/bin上,您可以使用以下命令检查它:

which convert

答案 2 :(得分:1)

convert -normalize yourfile.pdf[0] yourdestination.jpg

答案 3 :(得分:0)

ImageMagick内部使用GhostScript,通常ImageMagick的转换速度慢与Ghoastscript相比,所以如果您只想将转换pdf转换为图像,那么Ghostscript gs命令会更快。 下面是我几天前写的Ghostscript示例包装器。

PDFLib-Php

$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib->setImageQuality(95);
$pdflib->setDPI(300);
$pdflib->setPageRange(1,$pdflib->getNumberOfPages());
$pdflib->convert();

答案 4 :(得分:0)

在这里,你有我的解决方案。直接在php代码中使用Imagick。

将所有PDF页面转换为JPG

 // create Imagick object
 $imagick = new Imagick();
 // Reads image from PDF
 $imagick->readImage('file.pdf');
 // Writes an image
 $imagick->writeImages('converted.jpg', false);

将特定PDF页面转换为JPG

 // create Imagick object
 $imagick = new Imagick();
 // Read image from PDF
 $imagick->readImage('test.pdf[0]');
 // Writes an image
 $imagick->writeImages('converted_page_one.jpg');

解决此问题的另一种方法是使用 spatie / pdf-to-image 库。

干杯!