PDF to PDF Node.js Examples
Complete Node.js examples for common PDF to PDF tasks. See the Node.js SDK guide for installation and result handling.
You can run the examples below with the displayed API credentials. Update the input URLs and filenames as needed. Each Node.js example can be copied and run independently.
Merging
Add PDFs in the order they should appear in the merged document. Choose file, in-memory, or output-stream handling for the result. The stream example uses a binary file stream as its destination.
Merge PDF files
Merge first.pdf and second.pdf in that order.
Save to a file
const pdfcrowd = require('pdfcrowd'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); client.addPdfFile("first.pdf"); client.addPdfFile("second.pdf"); client.convertToFile("merged.pdf", (error, filePath) => { if (error) { console.error(error.toString()); return; } console.log("Saved:", filePath); });
Keep in memory
const pdfcrowd = require('pdfcrowd'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); client.addPdfFile("first.pdf"); client.addPdfFile("second.pdf"); const chunks = []; let failed = false; client.convert({ data: (stream) => stream.on("data", (chunk) => chunks.push(chunk)), error: (message, statusCode) => { failed = true; console.error(new pdfcrowd.Pdfcrowd.Error( message, statusCode).toString()); }, end: () => { if (failed) { return; } const pdf = Buffer.concat(chunks); // Buffer console.log("PDF ready:", pdf.length, "bytes"); } });
Write to a stream
const pdfcrowd = require('pdfcrowd'); const fs = require('node:fs'); const { pipeline } = require('node:stream'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); let output_stream; let failed = false; function fail(error) { if (failed) return; failed = true; console.error(error.toString()); process.exitCode = 1; if (output_stream) output_stream.destroy(); } try { client.addPdfFile("first.pdf"); client.addPdfFile("second.pdf"); client.convert({ data: (stream) => { if (failed) { stream.destroy(); return; } output_stream = fs.createWriteStream("merged.pdf"); pipeline(stream, output_stream, (error) => { if (error) { fail(error); return; } if (failed) return; console.log("Saved:", "merged.pdf"); }); }, error: (message, statusCode) => fail(new pdfcrowd.Pdfcrowd.Error( message, statusCode)), end: () => { console.log("Conversion response ended."); }, }); } catch (error) { fail(error); }
Merge raw PDF bytes
Read first.pdf and second.pdf as binary data. In an application, pass the bytes you already hold in memory instead.
Save to a file
const pdfcrowd = require('pdfcrowd'); const fs = require('node:fs'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); const pdf_data_1 = fs.readFileSync("first.pdf"); // Buffer const pdf_data_2 = fs.readFileSync("second.pdf"); // Buffer client.addPdfRawData(pdf_data_1); client.addPdfRawData(pdf_data_2); client.convertToFile("merged.pdf", (error, filePath) => { if (error) { console.error(error.toString()); return; } console.log("Saved:", filePath); });
Keep in memory
const pdfcrowd = require('pdfcrowd'); const fs = require('node:fs'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); const pdf_data_1 = fs.readFileSync("first.pdf"); // Buffer const pdf_data_2 = fs.readFileSync("second.pdf"); // Buffer client.addPdfRawData(pdf_data_1); client.addPdfRawData(pdf_data_2); const chunks = []; let failed = false; client.convert({ data: (stream) => stream.on("data", (chunk) => chunks.push(chunk)), error: (message, statusCode) => { failed = true; console.error(new pdfcrowd.Pdfcrowd.Error( message, statusCode).toString()); }, end: () => { if (failed) { return; } const pdf = Buffer.concat(chunks); // Buffer console.log("PDF ready:", pdf.length, "bytes"); } });
Merge bytes with a file
Add the bytes from first.pdf, followed by second.pdf, and save the result to merged.pdf.
const pdfcrowd = require('pdfcrowd'); const fs = require('node:fs'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); const pdf_data_1 = fs.readFileSync("first.pdf"); // Buffer client.addPdfRawData(pdf_data_1); client.addPdfFile("second.pdf"); client.convertToFile("merged.pdf", (error, filePath) => { if (error) { console.error(error.toString()); return; } console.log("Saved:", filePath); });
PDF operations
Add a watermark
Apply watermark.pdf to proposal.pdf and save company_offer.pdf.
const pdfcrowd = require('pdfcrowd'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); client.setPageWatermark("watermark.pdf"); client.addPdfFile("proposal.pdf"); client.convertToFile("company_offer.pdf", (error, filePath) => { if (error) { console.error(error.toString()); return; } console.log("Saved:", filePath); });
Linearize a PDF
Optimize not_linearized.pdf for progressive loading in a browser and save it as linearized.pdf.
const pdfcrowd = require('pdfcrowd'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); client.setLinearize(true); client.addPdfFile("not_linearized.pdf"); client.convertToFile("linearized.pdf", (error, filePath) => { if (error) { console.error(error.toString()); return; } console.log("Saved:", filePath); });
Extract pages
Extract page 3 and pages 7 through the end of 13_pages.pdf into output.pdf.
const pdfcrowd = require('pdfcrowd'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); client.setAction("extract"); client.setPageRange("3,7-"); client.addPdfFile("13_pages.pdf"); client.convertToFile("output.pdf", (error, filePath) => { if (error) { console.error(error.toString()); return; } console.log("Saved:", filePath); });
Delete pages
Remove pages 1–3 and page 10 from 13_pages.pdf and save the remaining pages to output.pdf.
const pdfcrowd = require('pdfcrowd'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); client.setAction("delete"); client.setPageRange("1-3,10"); client.addPdfFile("13_pages.pdf"); client.convertToFile("output.pdf", (error, filePath) => { if (error) { console.error(error.toString()); return; } console.log("Saved:", filePath); });
Split a PDF
Split 13_pages.pdf into two documents: pages 1–10 in pages1-10.pdf, and the remaining pages in pages11-end.pdf.
const pdfcrowd = require('pdfcrowd'); const client = new pdfcrowd.PdfToPdfClient("demo", "demo"); function convertPart(pageRange, output, next) { try { client.setPageRange(pageRange); client.convertToFile(output, (error, filePath) => { if (error) { console.error(error.toString()); process.exitCode = 1; return; } console.log("Saved:", filePath); if (next) next(); }); } catch (error) { console.error(error.toString()); process.exitCode = 1; } } client.addPdfFile("13_pages.pdf"); client.setAction('extract'); convertPart('1-10', "pages1-10.pdf", () => { convertPart('11-', "pages11-end.pdf"); });