cideale / libmergepdf
用于合并多个PDF的库
1.0.9
2024-05-23 18:47 UTC
Requires
- php: ^7.1||^8.2
- setasign/fpdi: ^2
- tecnickcom/tcpdf: ^6.2.22
Requires (Dev)
- phpunit/phpunit: ^7|^8
- smalot/pdfparser: ~0.13
Conflicts
README
PHP库,用于合并多个PDF。
安装
composer require Cideale/Libmergepdf
使用方法
将 bar.pdf 的前十页添加到 foo.pdf
use Cideale\Libmergepdf\Merger; use Cideale\Libmergepdf\Pages; $merger = new Merger; $merger->addFile('foo.pdf'); $merger->addFile('bar.pdf', new Pages('1-10')); $createdPdf = $merger->merge();
从迭代器批量添加文件
use Cideale\Libmergepdf\Merger; $merger = new Merger; $merger->addIterator(['A.pdf', 'B.pdf']); $createdPdf = $merger->merge();
合并1.5及更高版本的PDF
默认的 FPDI
驱动无法处理1.5或更高版本的压缩PDF。可以通过使用稍微实验性的 TCPDI
驱动来绕过这个限制。
use Cideale\Libmergepdf\Merger; use Cideale\Libmergepdf\Driver\TcpdiDriver; $merger = new Merger(new TcpdiDriver);
使用不可变合并器
可以通过直接使用 driver
来实现不可变性。
use Cideale\Libmergepdf\Driver\Fpdi2Driver; use Cideale\Libmergepdf\Source\FileSource; use Cideale\Libmergepdf\Pages; $merger = new Fpdi2Driver; $createdPdf = $merger->merge( new FileSource('foo.pdf'), new FileSource('bar.pdf', new Pages('1-10')) );
已知问题
- 在合并时,页面内容流之外的链接和其他内容将被移除。这是由于FPDI的限制,并且无法使用当前策略解决。更多信息请参见 FPDI。
- TCPDI(在用于合并具有新功能的PDF的 TcpdiDriver 中使用)似乎没有得到维护。这使得某些类型的文件合并变得脆弱,错误消息通常无济于事。本软件包无法修复 TCPDI 的问题。长期解决方案是切换到不同的后端。欢迎提出建议!