drenso/pdf-to-image

将PDF转换为图像

资助包维护!
spatie

3.0.0 2024-02-13 10:01 UTC

This package is auto-updated.

Last update: 2024-09-13 11:19:13 UTC


README

Latest Version on Packagist Software License Quality Score StyleCI Total Downloads

此包提供了一个易于使用的类,可以将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的路径具有jpgjpegpng扩展名,则图像将以该格式保存。否则,输出将是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)。有关更多信息,请参阅许可证文件