我正在尝试使用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上提供了一些有用的代码,但由于某些原因它对我不起作用。
答案 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)。