在PHP项目中,我们经常需要将PDF文档转换为图片,以便在浏览器中展示或实现其他功能。这篇文章记录 Spatie PDF To Image 库在PHP中实现PDF转图片。
1、安装imagemagick
sudo apt install imagemagick ghostscript # Ubuntu sudo yum install ImageMagick ghostscript # CentOS #安装完成后查看版本 convert -version #检查 Imagick which gs #检查 Ghostscript
2、安装 Spatie PDF To Image
composer require spatie/pdf-to-image
3、安装PHP imagemagick 扩展

4、实现PDF转图片
$pdfHandle = new \Spatie\PdfToImage\Pdf($file);
// 设置图片格式 PNG
$pdfHandle->setOutputFormat('png');
// 增加图片分辨率
$pdfHandle->setResolution(300);
// 获取PDF总页数
$totalPages = $pdfHandle->getNumberOfPages();
try {
$outputFiles = [];
for ($page = 1; $page <= $totalPages; $page++) {
// 保存文件路径
$fName = $outputPath . $page . '.png';
if (!$pdfHandle->setPage($page)->saveImage($fName)) {
responseError('PDF图片转换失败');
}
$outputFiles[$page] = $fName;
}
} catch (Exception $e) {
responseError($e->getMessage());
}常见问题
1、attempt to perform an operation not allowed by the security policy PDF'
这个错误通常是 ImageMagick 的安全策略 限制了 PDF 处理,导致 Spatie PdfToImage 无法获取 PDF 页数。
解决方案:修改 ImageMagick 安全策略
ImageMagick 具有一个安全策略文件 /etc/ImageMagick-6/policy.xml,默认情况下会禁用 PDF 处理
将 <policy domain="coder" rights="none" pattern="PDF" /> 修改为 <policy domain="coder" rights="read|write" pattern="PDF" />
转载请注明本文标题和链接:《 PHP PDF文档转图片解决方案 》



网友评论 0