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

5

我正在尝试使用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个回答

4

我建议尝试以下方法:

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

我遇到了一个错误:Imagick::writeimagefile() 函数期望参数 1 是资源类型,但实际传递的是字符串类型。 - IBNets
糟糕,应该是writeImage()——我很少使用Imagick。 - Bonzo
谢谢你的快速回复! - IBNets

3

Bonzo的答案需要在Web服务器上安装Imagick。如果Web服务器上没有安装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');

在这个例子中,我从第一页(my_pdf.pdf[0]中的0表示第一页)创建了一个178x178像素的png缩略图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接