使用 Imagick 创建 PDF 缩略图并写入文件
Create PDF thumbnail with Imagick and write to file
我正在尝试使用 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 provided some helpful code on #16606642,但由于某些原因它对我不起作用。
我会尝试:
$pdfThumb = new imagick();
$pdfThumb->setResolution(10, 10);
$pdfThumb->readImage($filePath . $fileName . $fileExt . '[0]');
$pdfThumb->setImageFormat('jpg');
$fp = $filePath . $fileName . '.jpg';
$pdfThumb->writeImage($fp);
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');
在这个例子中,我从第一页创建了一个 178x178 像素的 png 缩略图(my_pdf.pdf[0] 0 表示第一页 pdf)。
我正在尝试使用 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 provided some helpful code on #16606642,但由于某些原因它对我不起作用。
我会尝试:
$pdfThumb = new imagick();
$pdfThumb->setResolution(10, 10);
$pdfThumb->readImage($filePath . $fileName . $fileExt . '[0]');
$pdfThumb->setImageFormat('jpg');
$fp = $filePath . $fileName . '.jpg';
$pdfThumb->writeImage($fp);
Bonzo 的回答需要网络服务器上的 imagick。如果 imagick 不在网络服务器上,您可以尝试通过 php 命令 exec():
从命令行执行 imagemagickexec('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');
在这个例子中,我从第一页创建了一个 178x178 像素的 png 缩略图(my_pdf.pdf[0] 0 表示第一页 pdf)。