PDF document generation library for Node.js and browsers, written in pure JavaScript.
Check out the playground and examples.
- line wrapping
- text alignment (left, right, centered, justified)
- numbered and bulleted lists
- tables and columns:
- auto/fixed/star-sized widths
- column spans and row spans
- headers automatically repeated after a page break
- snaking columns (newspaper-style layout where content flows from column to column)
- images, SVG and vector graphics
- QR codes
- convenient styling and style inheritance
- page headers and footers:
- static or dynamic content
- access to current page number and page count
- background layer
- watermarks
- page dimensions and orientations
- margins
- document sections
- custom page breaks
- font embedding
- support for complex, multi-level (nested) structures
- table of contents
- document outlines (bookmarks)
- external links and internal navigation
- file attachments
- encryption, password protection and document permissions
- PDF/A support
- helper methods for opening/printing/downloading the generated PDF
- PDF metadata (e.g. author, subject)
Install with npm:
npm install pdfmakeSave the following as example.js:
const pdfmake = require('pdfmake');
const Roboto = require('pdfmake/fonts/Roboto');
pdfmake.addFonts(Roboto);
const docDefinition = {
content: ['Hello from pdfmake!']
};
pdfmake.createPdf(docDefinition).write('document.pdf').catch(console.error);Run node example.js to create document.pdf in the current directory.
Save the following as index.html next to your node_modules directory and open it in a browser.
<!doctype html>
<meta charset="utf-8">
<script src="node_modules/pdfmake/build/pdfmake.min.js"></script>
<script src="node_modules/pdfmake/build/vfs_fonts.js"></script>
<button onclick="pdfMake.createPdf(docDefinition).download('document.pdf').catch(console.error)">Download PDF</button>
<script>
const docDefinition = {
content: ['Hello from pdfmake!']
};
</script>See the documentation for usage and API details.
Documentation improvements are welcome in the documentation repository.
git clone https://github.com/bpampuch/pdfmake.git
cd pdfmake
npm install
npm run buildMIT
pdfmake is based on PDFKit.
Thanks to all contributors.