Manipulation · Node.js and TypeScript

Merge PDF files in Node.js

Combine, split, reorder and rotate PDF pages from Node.js. rust-pdf parses each document into an editable model, renumbers and remaps every object correctly on merge, and rebuilds a clean page tree on output.

Why Node.js and TypeScript needs this

Node typically reaches for heavy wrappers or headless Chrome for anything past basic output, which is slow, fragile and never archival-grade.

Merging and splitting are list operations on a flat page order: append another document, extract a subset, reverse, rotate or delete pages, then save. Because the parser handles classic and cross-reference streams, object streams and encrypted input, it works on real-world files, not just ones it wrote itself.

  • Merge whole documents, extract page subsets, reorder with a permutation, rotate or delete pages.
  • Objects are renumbered and references deep-remapped, so merged files stay valid.
  • Reads classic and xref streams, object streams and RC4 / AES encrypted input.

Merge PDFs in Node.js with rust-pdf

Install the package, then call the same idiomatic API every rust-pdf binding shares. The snippet below is real Node.js code from the reference docs.

Node.js
const a = EditableDoc.loadFile("a.pdf");
const b = EditableDoc.loadFile("b.pdf");
a.merge(b);                        // a now has a's pages followed by b's
a.rotatePage(0, 90);
a.reorderPages([...Array(a.pageCount).keys()].reverse());
a.save("merged.pdf");
b.close();

const subset = a.extractPages([0, 2]);   // pages 1 and 3
subset.save("subset.pdf");
subset.close();
a.close();
Validated by: qpdfmutool

This is part of the free tier in Node.js. No license required.

Full Node.js reference in the documentation.

Merging in Node.js: FAQ

Can I merge more than two PDFs in Node.js?

Yes. Load each document and call merge for each one; pages are appended in order. You can then reorder, rotate or extract any subset before saving.

Does merging keep the files valid?

Yes. On merge every object from the other document is renumbered and its references are deep-remapped, and the real page tree is rebuilt on output, so the result passes qpdf and mutool.

Is merging free?

Yes. Loading, merging, splitting, reordering and text extraction are all part of the free tier in Node.js. You only need a license for the corporate features such as PDF/A, signatures and encryption.

Merge PDF Files in Node.js

One Rust core, the same output across every language. Prototype for free, license the corporate features when you ship.