Hi,
I am able to render the pdf but not able to send an email after render. I dont know where to put the custom scripts code in my nodejs code. I am calling scripts in the jsreport render, but nothing is happening. Currently my code is as follow.
var http = require('http');
var jsreport = require('jsreport');
var fs = require('fs');
var contents = fs.readFileSync('template.html').toString();
console.log(contents);
console.log('*********************');
var scripts = fs.readFileSync('scripts.js').toString();
console.log(scripts);
http.createServer(function (req, res) {
jsreport.render({
"template": {
"content": contents,
"engine": "handlebars",
"phantom": {
"orientation": "potrait",
"width": "350px"
},
"recipe": "phantom-pdf"
},
"data": {
"items": [{
"journeyCount": 168,
"journeyDate": "03-09-2017"
}, {
"journeyCount": 267,
"journeyDate": "03-08-2017"
}, {
"journeyCount": 252,
"journeyDate": "03-07-2017"
}, {
"journeyCount": 303,
"journeyDate": "03-06-2017"
}, {
"journeyCount": 58,
"journeyDate": "03-05-2017"
}, {
"journeyCount": 143,
"journeyDate": "03-04-2017"
}, {
"journeyCount": 352,
"journeyDate": "03-03-2017"
}]
},
"scripts":"scripts"
})
.then(function (out) {
out.stream.pipe(res);
})
.catch(function (e) {
res.end(e.message);
});
}).listen(1337, '127.0.0.1');
and scripts code is as follows:
//send the pdf report by mail
function afterRender(req, res, done) {
var SendGrid = require('sendgrid');
var sendgrid = new SendGrid('', '');
console.log('***********************RUNNING SCRIPTS *******************');
sendgrid.send({ to: '', from: '', subject: 'test',
html: 'This is your report',
files: [ {filename: 'Report.pdf', content: new Buffer(res.content) }]
}, function(success, message) {
done(success);
});
}