autoprotect-group/libmergepdf

用于合并多个PDF的库

4.1.0 2023-03-30 09:45 UTC

This package is auto-updated.

Last update: 2024-08-30 01:39:42 UTC


README

Packagist Version Build Status Quality Score

用于合并多个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中的问题。长期解决方案是切换到不同的后端。非常欢迎建议!