iio/libmergepdf

合并多个PDF的库

4.0.4 2020-12-07 12:18 UTC

This package is auto-updated.

Last update: 2024-09-10 13:05:50 UTC


README

Packagist Version Build Status Quality Score

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 的问题。长期解决方案是切换到不同的后端。欢迎提出建议!