在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