Introduction to PDFKit
PDFKit is a flexible and powerful library in JavaScript for generating PDF documents programmatically. It allows developers to create PDFs with complex layouts and high-quality text, images, and other graphics. Whether you need to generate invoices, reports, ebooks, or other types of documents, PDFKit provides a seamless way to accomplish this.
Setting Up PDFKit
To get started with PDFKit, you need to install it via npm:
npm install pdfkit
Once installed, you can require it in your Node.js applications:
const PDFDocument = require('pdfkit');
Basic Usage
Here’s a basic example of creating a PDF document with PDFKit:
const fs = require('fs'); const PDFDocument = require('pdfkit'); const doc = new PDFDocument(); doc.pipe(fs.createWriteStream('output.pdf')); doc.text('Hello World!'); doc.end();
Adding Text
You can add text to your PDF document with various styles:
doc.font('Times-Roman') .fontSize(12) .text('This is a test', 100, 100);
Adding Images
PDFKit supports embedding images in the PDF document:
doc.image('path/to/image.png', { fit: [250, 300], align: 'center' });
Drawing Shapes
You can draw shapes like rectangles, circles, and lines:
doc.rect(50, 50, 100, 100) .fill('#FF0000'); doc.circle(150, 150, 50) .stroke('#00FF00');
Adding Links
Add hyperlinks to your text:
doc.text('Click here!', 100, 100) .link(100, 100, 160, 27, 'http://google.com');
Creating Tables
PDFKit makes it possible to generate tables:
const tableData = [ ['Name', 'Age', 'Location'], ['John Doe', '29', 'New York'], ['Jane Roe', '32', 'San Francisco'] ]; for (let i = 0; i < tableData.length; i++) { const row = tableData[i]; for (let j = 0; j < row.length; j++) { doc.text(row[j], 100 + j * 100, 200 + i * 20); } }
Complete App Example
Below is a complete example of a Node.js application that uses many of the PDFKit features presented:
const fs = require('fs'); const PDFDocument = require('pdfkit'); const doc = new PDFDocument(); doc.pipe(fs.createWriteStream('example.pdf')); doc.font('Times-Roman') .fontSize(18) .text('Invoice', { align: 'center' }); doc.moveDown() .fontSize(14) .text('Customer:', { align: 'left' }); doc.fontSize(12) .text('John Doe', 100, 150) .text('123 Fake St.', 100, 165) .text('New York, NY 10001', 100, 180); doc.moveDown() .fontSize(14) .text('Order Details:', { align: 'left' }); const orderDetails = [ ['Item', 'Description', 'Price', 'Quantity', 'Total'], ['Widget', 'A useful widget', '10.00', '2', '20.00'], ['Thingy', 'Another thing', '15.00', '1', '15.00'] ]; for (let i = 0; i < orderDetails.length; i++) { const row = orderDetails[i]; for (let j = 0; j < row.length; j++) { doc.text(row[j], 100 + j * 100, 230 + i * 20); } } doc.image('path/to/company_logo.png', { fit: [100, 100], align: 'center' }); doc.end();
We hope this guide helps you utilize PDFKit’s full potential in your projects.
Hash: 398ce75f627d6452c0d1d9634cba3dd9736d69d114848c7a97a4f635017103f8