Skip to content

Instantly share code, notes, and snippets.

@odixon
Forked from adamgibbons/node-pdf-generator.js
Created July 9, 2019 22:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save odixon/f5a12c512485905701cbac053f9dee78 to your computer and use it in GitHub Desktop.
Save odixon/f5a12c512485905701cbac053f9dee78 to your computer and use it in GitHub Desktop.
Display or download PDF from node.js server
var restify = require('restify')
, port = process.env.PORT || 3000
, Phantom = require('phantom')
, tmpdir = require('os').tmpdir()
, fs = require('fs');
var server = restify.createServer();
function setResponseHeaders(res, filename) {
res.header('Content-disposition', 'inline; filename=' + filename);
res.header('Content-type', 'application/pdf');
}
server.get('/downloads/:filename', function(req, res, next) {
var filename = req.params.filename;
file = tmpdir + filename;
setResponseHeaders(res, filename);
Phantom.create(function(phantom) {
phantom.createPage(function(page) {
// Render PDF and send to browser
function dispatchPDF() {
page.render(file, function() {
fs.createReadStream(file).pipe(res);
phantom.exit();
});
};
page.set('content', "<p>hello i am content</p>");
page.set('paperSize', '5in');
page.set('onLoadFinished', dispatchPDF);
});
});
});
server.listen(port, function() {
console.log("Listening on port %s...", port);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment