PDF Generation with PDFKit
Generate PDFs in Node.js. Create invoices and reports.
PDF Generation with PDFKit
Setup
```bash npm install pdfkit ```
Basic PDF
```javascript 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
```javascript 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.