Generate pdf file using pdfkit and send it to browser in nodejs-expressjs
So Instead try Using
doc.pipe(res);
doc.write
is the line causing the trouble, which is also a deprecated method so don't use it. Instead, use pipe to tell your doc where to stream the information, and remember to close it using doc.end()
, i.e., like so:
doc = new PDFDocument();
doc.pipe( fs.createWriteStream('out.pdf') );
// rest of the code goes here...
doc.end();
Note that it's not important that doc.pipe()
be at the top, it just makes sense to me (you can put it before or after doc.end()
. It doesn't matter, it'll work just fine). Finally, note that you can use pipe
to stream directly to a response, there's no need to create the file first and then download it, i.e.:
doc.pipe( res )