Node.js6 min read
PDF Generation with PDFKit
Generate PDFs in Node.js. Create invoices and reports.
Michael Torres
December 19, 2025
0.0k0
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