Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I save a jsreport render to file with nodeJs?

I am new to node.js and jsreport, but what I am attempting to do is create a pdf in memory using node.js and then saving it to disk. I need this to be stand-along as it will be running as an AWS Lambda function.

var fs = require('fs');
require("jsreport").render("<h1>Hi there!</h1>").then(function(out) {
    //pipe pdf with "Hi there!"
    fs.writeFile('C:\\helloworld.pdf', out, function (err) {
        if (err) return console.log(err);
        console.log('Hello World > helloworld.txt');
    });
fs.close();
    console.log("The End");
});

Although this runs the output pdf will not open in Adobe Reader so I assume the file output is not a valid PDF.

this requires npm install jsreport

like image 569
Ryan Fisch Avatar asked Apr 03 '15 18:04

Ryan Fisch


1 Answers

From what I gather from the jsreport website (although I haven't been able to verify, as none of the examples on their website work for me), it looks like out isn't rendered (PDF) data, but an object that contains—amongst other things—a stream.

Which leads me to believe that this might work:

require("jsreport").render("<h1>Hi there!</h1>").then(function(out) {
  out.result.pipe(fs.createWriteStream('c:\\helloworld.pdf'));
});
like image 80
robertklep Avatar answered Oct 08 '22 01:10

robertklep