it-devgroup / laravel-pdf-merger
Laravel 的一个扩展包,可以将多个 PDF 文件合并为一个。
1.0.1
2021-04-20 08:20 UTC
Requires
- illuminate/support: >=8.27.0
- setasign/fpdi-fpdf: >=2.3.0
This package is auto-updated.
Last update: 2024-09-22 21:45:53 UTC
README
受另一个包启发的 Laravel PDF 合并器,为个人使用而创建。已在 Laravel 5.6 上测试。
优点
- 支持
PHP 7.4 - 支持
Laravel 8
安装
composer require it-devgroup/laravel-pdf-merger
配置
请对位于 config/app.php 的主配置文件进行以下更改
'providers' => [ ... ItDevgroup\LaravelPDFMerger\Providers\PDFMergerServiceProvider::class ], 'aliases' => [ ... 'PDFMerger' => ItDevgroup\LaravelPDFMerger\Facades\PDFMergerFacade::class ]
在合并版本号高于 1.4 或 PDF 字符串的 PDF 文件时,将在过程中创建一个临时 PDF 文件,并存储在
storage/tmp目录中,因此您可能需要提前创建它。此外,请注意,此包需要在服务器上安装 Ghostscript 以正确处理 1.5+ 版本的 PDF 文件。请参阅 安装指南
用法
您可以通过指定 PDF 文件的路径来添加要合并的 PDF 文件,使用 addPathToPDF 方法,或者使用 addPDFString 方法将 PDF 文件作为字符串添加。两种方法的第二个参数是所选页面的数组('all' 表示所有页面),第三个参数是 PDF 的方向(纵向或横向)。
$merger->addPathToPDF('/path/to/pdf', 'all', 'P'); $merger->addPDFString(file_get_contents('path/to/pdf'), ['1', '2'], 'L')
您可以使用 setFileName 方法设置合并后的 PDF 名称。
$merger->setFileName('merger.pdf');
最后,使用 merge 或 duplexMerge 方法完成合并过程,并使用合并 PDF 的其中一个输出选项。这两种方法之间的区别在于,如果合并后的 PDF 页数为奇数,则 duplexMerge 方法会在每个合并后的 PDF 后添加一个空白页。
可用的输出选项包括
inline()download()string()save('path/to/merged.pdf')
$merger->merge(); $merger->inline();
示例用法
$merger = \PDFMerger::init(); $merger->addPathToPDF(base_path('/vendor/it-devgroup/laravel-pdf-merger/examples/one.pdf'), [2], 'P'); $merger->addPDFString(file_get_contents(base_path('/vendor/grofgraf/laravel-pdf-merger/examples/two.pdf')), 'all', 'L'); $merger->merge(); $merger->save(base_path('/public/pdfs/merged.pdf'));