您的位置:时间博客>PHP>PHP PDF文档转图片解决方案

PHP PDF文档转图片解决方案

在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 扩展

d8ebcad7498354a265726ea874751c79.png


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

未登陆 表情
Ctrl+Enter快速提交