hyder / converter

一个 Laravel 扩展包,提供使用 Imagick PHP 扩展将 PDF 文件转换为图片的简单界面。

1.0.1 2023-04-09 18:07 UTC

This package is auto-updated.

Last update: 2024-09-30 01:57:42 UTC


README

一个 Laravel 扩展包,允许您将 PDF 文件转换为图片。该包使用 Imagick PHP 扩展和 GhostScript 将 PDF 文件转换为图片。

要求

  • PHP "^7.3|^8.0"

  • Imagick PHP 扩展
    在您的 php.ini 文件中取消注释或添加以下行以启用 Imagick 扩展:

extension=imagick
  • Ghostscript
    通过运行以下命令验证 Ghostscript 是否已安装:
gs -v

这将显示 Ghostscript 的版本号。

安装

您可以通过 composer 安装此包

composer require hyder/converter

配置

您可以通过发布配置文件来自定义包设置。要发布配置文件,请运行以下命令:

php artisan vendor:publish --provider="Hyder\Converter\ConverterServiceProvider" --tag="config"

这将创建一个 config/converter.php 文件,您可以在其中配置包设置。

可选

服务提供器将自动注册。或者,您也可以手动在您的 config/app.php 文件中添加服务提供器

'providers' => [
    // ...
    Hyder\Converter\ConverterServiceProvider::class,
];

用法

以下是将 PDF 文件转换为图片的示例

use Hyder\Converter\Facades\PdfToImage;

// Minimalistic
$response = PdfToImage::path('/path/to/file.pdf')
    ->save();

// Customize output
$response = PdfToImage::path('/path/to/file.pdf')
    ->format('png')
    ->resolution(200)
    ->maxLimit(5)
    ->setPage('1-3,5')
    ->toDir('/path/to/directory')
    ->save('output-image-name');

可用方法

以下是包的可用方法

path(string $path)

此方法设置要转换为图片的 PDF 文件的路径。

format(string $format)

此方法设置图片的输出格式。支持的格式为 JPEG、JPG 和 PNG。

resolution(int $dpi)

此方法设置输出图片的分辨率(每英寸点数 dpi)。分辨率越高,图片质量越好,但文件大小也越大。

maxLimit(int $max)

此方法设置要转换的页面数的最大限制。如果 PDF 文件有超过此限制的页面,则只转换前 $max 页。

setPage($pages)

此方法设置要转换的 PDF 文件页码。页码可以指定为单个页码(例如 1,2,3),页码范围(例如 1-3),或两者的组合(例如 1,2,3-5)。默认情况下,只转换第一页。

allPage()

此方法用于设置 PDF 文件的所有页码以转换为图片。当使用 allPage() 时,maxLimit() 或 setPage() 无效。如果在调用 allPage() 之前调用这些方法,它们将被忽略。

toDir(string $storageTo)

此方法设置转换后的图片将保存到的目录。如果没有指定目录,则使用默认目录。

save(string $name = "")

此方法将 PDF 文件转换为图片并保存到指定的目录。如果没有指定名称,则图片将使用随机名称保存。

错误处理

启用 imagick 后,您可能在实时服务器中遇到错误。ImageMagick 由于安全原因禁用了一些权限。您需要编辑配置文件来重新启用所需的操作。

使用您喜欢的文本编辑器打开 /etc/ImageMagick-6/policy.xml,找到以下行并将其替换为 "read|write":

打开文件

sudo nano /etc/ImageMagick-6/policy.xml

找到并编辑以下行

<policy domain="coder" rights="none" pattern="PDF" />

<policy domain="coder" rights="read|write" pattern="PDF" />

您可以在这里找到更好的理解。

鸣谢

Imagick

贡献

如果您想为此包做出贡献,请创建一个 pull request 或打开一个 issue。

许可

PDF to Image Converter 包是开源软件,许可协议为 MIT。