doode / pdf-fusion-laravel
Laravel 扩展包,用于将多个 PDF 文件合并成一个。
Requires
- php: ^7.3|^7.4|^8.0
- setasign/fpdf: ^1.8.3
- setasign/fpdi: ^2.3.6
README
PDF Fusion for Laravel。已测试与 Laravel 7
和 8
版本兼容。
优点
- 也支持 1.4 版本以上的 PDF
- 支持
PHP7.3/ 7.4/ 8.0^
和 laravel8
安装
您可以通过 composer 安装此包
composer require doode/pdf-fusion-laravel
如果您使用的是 Linux 系统(Debian/Ubuntu)
apt-get install ghostscript
如果您使用的是 Linux 系统(Arch Linux)
pacman -S ghostscript
配置
如果您的 Laravel 版本无法自动识别此包,请在 config/app.php
中进行以下更改
'providers' => [ ... Doode\PdfFusionLaravel\Providers\PdfFusionServiceProvider::class ], 'aliases' => [ ... 'PdfFusion' => Doode\PdfFusionLaravel\Facades\PdfFusionFacade::class ]
在合并 1.4 版本以上或 PDF 字符串时,将创建一个临时 PDF 并存储在
storage/tmp
目录中,因此您可能需要事先创建它。
注意
此外,请注意,此包需要服务器上安装 Ghostscript 才能正确处理 1.5+ 版本的 PDF。请参阅 安装指南
使用方法
您可以通过指定 PDF 文件的路径使用 addPathToPDF
方法添加要融合的 PDF,或者通过使用 addPDFString
方法将 PDF 文件作为字符串添加。两种方法中的第二个参数是所选页面('all'
表示所有页面)的数组,第三个参数是 PDF 的方向(纵向或横向)。
[P] = 纵向
[L] = 横向
$fusion->addPathToPDF('/path/to/pdf', 'all', 'P'); $fusion->addPDFString(file_get_contents('path/to/pdf'), ['1', '2'], 'L')
您可以使用 setFileName
方法设置合并后的 PDF 名称。
$merger->setFileName('output.pdf');
最后,使用 merge
或 duplexMerge
方法完成合并过程,并使用合并 PDF 的输出选项之一。这两种方法之间的区别是,如果合并的 PDF 页数是奇数,则 duplexMerge
方法会在每个合并后的 PDF 后添加空白页。
可用的输出选项有
inline()
download()
string()
save('path/to/merged.pdf')
$fusion->merge(); $fusion->inline();
示例使用
$fusion = \PdfFusion::init(); $fusion->addPathToPDF(base_path('/vendor/doode/pdf-fusion-laravel/examples/one.pdf'), [2], 'P'); $fusion->addPDFString(file_get_contents(base_path('/vendor/doode/pdf-fusion-laravel/examples/two.pdf')), 'all', 'L'); $fusion->merge(); $fusion->save(public_path('/pdfs/output.pdf'));
作者
致谢
- Webklex LaravelPDFMerger
许可证
MIT 许可证 (MIT)
版权所有 © 2020 Doode
在此协议下,任何获得此软件及其相关文档副本(“软件”)的人均可免费使用该软件,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供方提供软件的人行使其权利,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的副本或主要部分中。
软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类索赔、损害或其他责任是基于合同、侵权或其他方式,源于、因或与软件或其使用或任何其他方式相关。