phantom-pdf
v0.4.1
Published
PDF Generation for Node.js using handlebars and less
Downloads
19
Readme
Phantom PDF
A very opinionated PDF generation using PhantomJS written for Node.js. This is a push to get it out there. Unit tests and better documentation to come.
Installing
Make sure you have PhantomJS installed. Download link can be found on their website.
npm install phantom-pdf
Rendering a PDF
var PhantomPDF = require('phantom-pdf');
var manifest = {
phantomjsPath: __dirname+'/node_modules/phantomjs/bin/phantomjs', // Optional
templates: {
body: __dirname+'/templates/body.hbs', // Body is required as its the entry point
// If header is defined it will be the page header
// Note: phantomSettings.paperSize.header.height must also be set
header: __dirname+'/templates/header.hbs',
// If footer is defined it will be the page header
// Note: phantomSettings.paperSize.footer.height must also be set
footer: __dirname+'/templates/footer.hbs',
// This is an example of having a parcial view
product: __dirname+'/templates/product.hbs'
},
helpers: __dirname+'/helpers/index.js', // Handlebars helper
helperVariables: {}, // Additional data to be passed in the helper such as local
less: __dirname + '/less/index.less', // Less file to render into css
output: '/tmp/foo.pdf', // This is the destination of the newly created PDF
// Settings to be passed into phantom
// List of settings: http://phantomjs.org/api/webpage/
phantomSettings: {
paperSize: {
format: 'Letter',
orientation: 'portrait',
margin: {
top: '0.25in',
right: '0.5in',
bottom: '0.25in',
left: '0.5in'
},
header: {
height: '0.5in'
},
footer: {
height: '0.5in'
}
}
}
};
var data = { // Put any data you want to be exposed to your handlebars template
products: ['soccer ball', 'baseball', 'football'],
category: 'Balls'
};
var pdf = new PhantomPDF(manifest, data, function(err){
...
});
For debug
Save in a temp html file for develop
var manifest = {
output: '/tmp/foo.html'
...,
isDebug: true
}