iio / libmergepdf
合并多个PDF的库
4.0.4
2020-12-07 12:18 UTC
Requires
- php: ^7.1||^8.0
- setasign/fpdi: ^2
- tecnickcom/tcpdf: ^6.2.22
Requires (Dev)
- phpunit/phpunit: ^7|^8
- smalot/pdfparser: ~0.13
Conflicts
README
PHP库,用于合并多个PDF文件。
安装
composer require iio/libmergepdf
使用
将 bar.pdf 的前10页附加到 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(在 TcpdiDriver 中用于合并具有新功能的PDF)似乎没有得到维护。这使得某些类型的文件合并变得脆弱,错误信息通常没有什么帮助。此包无法修复 TCPDI 的问题。长期解决方案是切换到不同的后端。欢迎提出建议!