autoprotect-group / libmergepdf
用于合并多个PDF的库
4.1.0
2023-03-30 09:45 UTC
Requires
- php: ^8.1
- setasign/fpdi: ^2
- tecnickcom/tcpdf: ^6.2.22
Requires (Dev)
- phpunit/phpunit: ^10
- smalot/pdfparser: ~0.13
Conflicts
This package is auto-updated.
Last update: 2024-08-30 01:39:42 UTC
README
用于合并多个PDF的PHP库。
安装
composer require autoprotect-group/libmergepdf
用法
将bar.pdf的前十页添加到foo.pdf
use iio\libmergepdf\Merger; use iio\libmergepdf\Pages; $merger = new Merger; $merger->addFile('foo.pdf'); $merger->addFile('bar.pdf', new Pages('1-10')); $createdPdf = $merger->merge();
从迭代器批量添加文件
use iio\libmergepdf\Merger; $merger = new Merger; $merger->addIterator(['A.pdf', 'B.pdf']); $createdPdf = $merger->merge();
合并1.5版及更高版本的PDF
默认的FPDI
驱动程序无法处理1.5版或更高版本的压缩PDF。可以通过使用稍微更实验性的TCPDI
驱动程序来规避这个限制。
use iio\libmergepdf\Merger; use iio\libmergepdf\Driver\TcpdiDriver; $merger = new Merger(new TcpdiDriver);
使用不可变合并器
可以通过直接使用driver
来实现不可变性。
use iio\libmergepdf\Driver\Fpdi2Driver; use iio\libmergepdf\Source\FileSource; use iio\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中的问题。长期解决方案是切换到不同的后端。非常欢迎建议!