eve / pdf-converter
Laravel 扩展包,用于将 HTML 转换为 PDF,支持多种驱动。
Requires
- php: ^8.0
- barryvdh/laravel-dompdf: ^1.0.0
- eve/uuid: ^1.0
- illuminate/http: ^8.0|^9.0
- illuminate/log: ^8.0|^9.0
- illuminate/support: ^8.0|^9.0
- pdfcrowd/pdfcrowd: ^5.2
Requires (Dev)
- eve/coding-standard: ^1.1
- orchestra/testbench: ^6|^7.0
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_USERNAME
和PDFCROWD_API_KEY
环境变量,以便此驱动程序能够工作。
在这几个驱动程序中,mock
和 log
主要用于开发和/或测试目的。虽然 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 转换的配置选项因驱动程序而异。具体来说
-
对于
log
和mock
驱动程序,配置将被完全忽略。 -
对于
dompdf
,请参阅 laravel-dompdf 支持的 可用选项。 -
对于
pdfcrowd
,请参阅 官方 API 参考。寻找setX()
函数。然后您可以使用X
作为configure()
方法的$key
参数,以及setX()
所接受的任何$values
。例如
许可证
MIT。