Node.js5 min read
PDF Generation with PDFKit
Generate PDFs in Node.js. Create invoices and reports.
Michael Torres
Dec 18, 2025
17.8k499
PDF Generation with PDFKit
Setup
npm install pdfkit
Basic PDF
const PDFDocument = require('pdfkit');
const fs = require('fs');
const doc = new PDFDocument();
doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(25).text('Hello World!', 100, 100);
doc.addPage()
.fontSize(15)
.text('Second page', 100, 100);
doc.end();
Invoice Example
function generateInvoice(invoice, res) {
const doc = new PDFDocument({ margin: 50 });
doc.pipe(res);
doc.fontSize(20).text('INVOICE', 50, 50);
doc.fontSize(10).text(`Invoice #: ${invoice.id}`, 50, 80);
doc.moveTo(50, 120).lineTo(550, 120).stroke();
doc.fontSize(12).text('Bill To:', 50, 140);
doc.fontSize(10).text(invoice.customer.name, 50, 160);
doc.end();
}
app.get('/invoice/:id', async (req, res) => {
const invoice = await Invoice.findById(req.params.id);
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', `attachment; filename=invoice-${invoice.id}.pdf`);
generateInvoice(invoice, res);
});
Key Takeaway
PDFKit creates PDFs programmatically. Pipe to response for downloads. Good for invoices and reports.
#Node.js#PDF#PDFKit#Documents