cideale/libmergepdf

用于合并多个PDF的库

1.0.9 2024-05-23 18:47 UTC

This package is auto-updated.

Last update: 2024-09-23 19:26:59 UTC


README

Packagist Version

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