PHPackages                             vanta/libmergepdf - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PDF &amp; Document Generation](/categories/documents)
4. /
5. vanta/libmergepdf

ActiveLibrary[PDF &amp; Document Generation](/categories/documents)

vanta/libmergepdf
=================

Library for merging multiple PDFs

1.0(1y ago)06WTFPLPHPPHP ^7.4||^8.0CI passing

Since May 19Pushed 1y agoCompare

[ Source](https://github.com/VantaFinance/libmergepdf)[ Packagist](https://packagist.org/packages/vanta/libmergepdf)[ RSS](/packages/vanta-libmergepdf/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (12)Versions (3)Used By (0)

libmergepdf
===========

[](#libmergepdf)

PHP library for merging multiple PDFs.

Installation
------------

[](#installation)

```
composer require vanta/libmergepdf
```

Usage
-----

[](#usage)

Append the first ten pages of **bar.pdf** to **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();
```

Bulk add files from an iterator:

```
use iio\libmergepdf\Merger;

$merger = new Merger;
$merger->addIterator(['A.pdf', 'B.pdf']);
$createdPdf = $merger->merge();
```

### Merging pdfs of version 1.5 and later

[](#merging-pdfs-of-version-15-and-later)

The default `FPDI` driver is not able handle compressed pdfs of version 1.5 or later. Circumvent this limitation by using the slightly more experimental `TCPDI` driver.

```
use iio\libmergepdf\Merger;
use iio\libmergepdf\Driver\TcpdiDriver;

$merger = new Merger(new TcpdiDriver);
```

### Using an immutable merger

[](#using-an-immutable-merger)

Immutability may be achieved by using a `driver` directly.

```
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'))
);
```

Known issues
------------

[](#known-issues)

- Links and other content outside a page content stream is removed at merge. This is due to limitations in FPDI and not possible to resolve with the current strategy. For more information see [FPDI](https://www.setasign.com/support/faq/fpdi/after-importing-a-page-all-links-are-gone/#question-84).
- *TCPDI* (as used in the *TcpdiDriver* for merging pdfs with newer features) does not seem to be maintained. This makes mergeing fragile for certain kinds of files, and error messages are often all but helpful. This package will not be able to fix issues in *TCPDI*. The long term solution is to switch to a different backend. Suggestions are very welcomed!

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance46

Moderate activity, may be stable

Popularity4

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 84.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

411d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/37250ac0f6117b7d479802e14fcc870f2e2a85e6c6f26a037cfacb08b3db70a1?d=identicon)[shashkov.root](/maintainers/shashkov.root)

---

Top Contributors

[![hanneskod](https://avatars.githubusercontent.com/u/1369274?v=4)](https://github.com/hanneskod "hanneskod (75 commits)")[![root-aza](https://avatars.githubusercontent.com/u/13816704?v=4)](https://github.com/root-aza "root-aza (7 commits)")[![kaystrobach](https://avatars.githubusercontent.com/u/1185776?v=4)](https://github.com/kaystrobach "kaystrobach (2 commits)")[![md2perpe](https://avatars.githubusercontent.com/u/543239?v=4)](https://github.com/md2perpe "md2perpe (2 commits)")[![proxyconcept](https://avatars.githubusercontent.com/u/620151?v=4)](https://github.com/proxyconcept "proxyconcept (1 commits)")[![svenluijten](https://avatars.githubusercontent.com/u/11269635?v=4)](https://github.com/svenluijten "svenluijten (1 commits)")[![willoller](https://avatars.githubusercontent.com/u/127107?v=4)](https://github.com/willoller "willoller (1 commits)")

---

Tags

pdfmerge

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/vanta-libmergepdf/health.svg)

```
[![Health](https://phpackages.com/badges/vanta-libmergepdf/health.svg)](https://phpackages.com/packages/vanta-libmergepdf)
```

###  Alternatives

[mpdf/mpdf

PHP library generating PDF files from UTF-8 encoded HTML

4.7k83.4M563](/packages/mpdf-mpdf)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[iio/libmergepdf

Library for merging multiple PDFs

40814.5M20](/packages/iio-libmergepdf)[jurosh/pdf-merge

PHP PDF Merger

1552.4M5](/packages/jurosh-pdf-merge)[elibyy/tcpdf-laravel

tcpdf support for Laravel 6, 7, 8, 9, 10, 11

3632.9M8](/packages/elibyy-tcpdf-laravel)[bithost-gmbh/pdfviewhelpers

This is a TYPO3 CMS extension that provides various Fluid ViewHelpers to generate PDF documents.

45262.7k3](/packages/bithost-gmbh-pdfviewhelpers)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
