drenso / pdf-to-image
将PDF转换为图像
3.0.0
2024-02-13 10:01 UTC
Requires
- php: >=8.2
- ext-gd: *
- ext-random: *
- symfony/filesystem: ^5.4 || ^6.4 || ^7.0
- symfony/finder: ^5.4 || ^6.4 || ^7.0
- symfony/process: ^5.4 || ^6.4 || ^7.0
Requires (Dev)
- pestphp/pest: ^1.21
README
此包提供了一个易于使用的类,可以将PDF转换为图像。它基于spatie/pdf-to-image
库,该库依赖于Imagick进行转换。此库依赖于GD。
要求
您应该已安装Ghostscript。有关Ghostscript的问题,请参阅相关问题。
安装
该包可以通过composer安装
composer require drenso/pdf-to-image
使用
将PDF转换为图像很简单。
$pdf = new Drenso\PdfToImage\Pdf($pathToPdf); $pdf->saveImage($pathToWhereImageShouldBeStored);
如果传递给saveImage
的路径具有jpg
、jpeg
或png
扩展名,则图像将以该格式保存。否则,输出将是jpg。
其他方法
您可以获取PDF中的总页数
$pdf->getNumberOfPages(); //returns an int
默认情况下,将渲染PDF的第一页。如果您想渲染另一页,可以这样做
$pdf->setPage(2) ->saveImage($pathToWhereImageShouldBeStored); //saves the second page
您可以覆盖输出格式
$pdf->setOutputFormat(ExportFormatEnum::PNG) ->saveImage($pathToWhereImageShouldBeStored); //the output wil be a png, no matter what
您可以设置压缩质量(这取决于导出格式,请参阅GD文档以获取更多信息)
$pdf->setCompressionQuality(100); // sets the compression quality to maximum
您可以指定缩放图像的宽度
$pdf ->setWidth(400) ->saveImage($pathToWhereImageShouldBeStored);
有关Ghostscript的问题
此包通过Imagick使用Ghostscript。为了使其正常工作,Ghostscripts的gs
命令应该可以从PHP进程访问。对于PHP CLI进程(例如,Laravel的异步作业、命令等),这通常是已经实现的。
然而,对于PHP在FPM上(例如,在浏览器中运行此包时)您可能会遇到以下问题
Uncaught ImagickException: FailedToExecuteCommand 'gs'
这可以通过在您的php-fpm.conf
文件末尾添加以下行并重新启动PHP FPM来解决。如果您不确定php-fpm.conf
文件的位置,您可以通过检查phpinfo()
来确认。如果您使用Laravel Valet,则php-fpm.conf
文件将位于/usr/local/etc/php/YOUR-PHP-VERSION
目录中。
env[PATH] = /usr/local/bin:/usr/bin:/bin
这将指示PHP FPM在正确的位置查找gs
二进制文件。
测试
composer test
更改日志
请参阅更改日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。