eve/pdf-converter

Laravel 扩展包,用于将 HTML 转换为 PDF,支持多种驱动。

v1.1.0 2022-02-14 09:30 UTC

This package is auto-updated.

Last update: 2024-09-14 14:53:53 UTC


README

A Laravel 扩展包,帮助将 HTML 转换为 PDF。支持多种驱动。

要求和安装

eve/pdf-converter 需要 Laravel 8.x 和 PHP 8.x。您可以通过 Composer 安装此扩展包。

composer require eve/pdf-converter

接下来,发布配置文件

php artisan vendor:publish --provider="Eve\PdfConverter\ServiceProvider"

将创建一个 pdf_converter.php 文件,并将其复制到您的应用程序的 config 文件夹中。

使用方法

eve/pdf-converter 支持 4 个驱动程序,您可以在 .env 中通过 PDF_CONVERTER_DRIVER 键进行配置。

  • dompdf:默认。底层使用 laravel-dompdf
  • mock:始终返回一个 测试 PDF 文件。不执行任何实际转换。
  • log:使用 Laravel 的日志记录器记录输入 HTML 和输出路径。不执行任何实际转换。
  • pdfcrowd:使用商业 Pdfcrowd 服务。您还需要设置 PDFCROWD_USERNAMEPDFCROWD_API_KEY 环境变量,以便此驱动程序能够工作。

在这几个驱动程序中,mocklog 主要用于开发和/或测试目的。虽然 dompdf 可以用于生产,但可能需要进行一些复杂的配置,而如果愿意每月支付一些费用,则 pdfcrowd 应该是最佳选择。

由于 eve/pdf-converter 首先是为 eve 的内部使用开发的,我们没有计划自行添加更多驱动程序。但欢迎 PR。

一切设置完成后,此包非常简单。您可以使用依赖注入或外观(或两者都使用,取决于您希望代码库看起来有多傻)。

依赖注入

注入 Eve\PdfConverter\PdfConverterInterface 并使用它

public function __construct(private \Eve\PdfConverter\PdfConverterInterface $converter) 
{
    $this->converter->configure('key', 'value');
    
    // returns an \Illuminate\Http\File instance
    $this->converter->convertHtml('<p>Hello World</p>', '/path/to/output/file.pdf');
}

外观

如果您喜欢 外观 的任何原因,则 eve/pdf-converter 提供了 \Eve\PdfConverter\Facades\PdfConverter 外观。为了您的方便,此外观还别名到 \PdfConverter

public function generateInvoice(): void
{
    \PdfConverter::configure('key', 'value');
    \PdfConverter::convertHtml('<p>Free of charge</p>', '/my/invoice.pdf');
}

PDF 转换配置

如果您注意到了,可以通过 configure 方法调整 PDF 转换的输出

$converter->configure(array|string $key, ...$values);

现在,PDF 转换的配置选项因驱动程序而异。具体来说

  • 对于 logmock 驱动程序,配置将被完全忽略。

  • 对于 dompdf,请参阅 laravel-dompdf 支持的 可用选项

  • 对于 pdfcrowd,请参阅 官方 API 参考。寻找 setX() 函数。然后您可以使用 X 作为 configure() 方法的 $key 参数,以及 setX() 所接受的任何 $values。例如

许可证

MIT。