使用Imagick创建PDF缩略图并写入文件

时间:2016-06-03 18:56:10

标签: php imagemagick imagick

我正在尝试使用Imagick创建一个pdf缩略图,并将其保存在服务器上与pdf相同的位置。下面的代码工作正常。问题是我不想回应图像。但是,如果我删除echo语句,生成的jpg文件包含错误并且不可读。如何创建缩略图并写入文件而不将其发送到浏览器?

$pdfThumb = new \imagick();
$pdfThumb->setResolution(10, 10);
$pdfThumb->readImage($filePath . $fileName . $fileExt . '[0]');
$pdfThumb->setImageFormat('jpg');
header("Content-Type: image/jpeg");
echo $pdfThumb;
$fp = fopen($filePath . $fileName . '.jpg', "x");
$pdfThumb->writeImageFile($fp);
fclose($fp);

DaGhostman Dimitrov#16606642上提供了一些有用的代码,但由于某些原因它对我不起作用。

2 个答案:

答案 0 :(得分:2)

我会尝试:

$pdfThumb = new imagick();
$pdfThumb->setResolution(10, 10);
$pdfThumb->readImage($filePath . $fileName . $fileExt . '[0]');
$pdfThumb->setImageFormat('jpg');
$fp = $filePath . $fileName . '.jpg';
$pdfThumb->writeImage($fp);

答案 1 :(得分:0)

Bonzo的答案要求imagick在网络服务器上。如果imagick不在网络服务器上,则可以尝试通过php命令exec()从命令行执行imagemagick:

exec('convert -thumbnail  "178^>" -background white -alpha remove -crop 178x178+0+0 my_pdf.pdf[0] my_pdf.png')

如果您希望一步一步从脚本所在的同一文件夹转换所有pdf,请尝试以下操作:

exec('for f in *.pdf; do convert -thumbnail  "178^>" -background white -alpha remove -crop 178x178+0+0 "$f"[0] "${f%.pdf}.png"; done');

在此示例中,我从首页创建了png 178x178像素的缩略图(my_pdf.pdf [0],0表示首页是pdf)。