我使用PDFKit生成PDF。我使用Nodejitsu进行托管,因此我无法将PDF保存到文件中,但我可以将它们保存为可读流。我想在Sendgrid电子邮件中添加该流,如下所示:
sendgrid.send({
to: email,
files: [{ filename: 'File.pdf', content: /* what to put here? */ }]
/* ... */
});
我试过doc.output()
无效。
答案 0 :(得分:6)
要将SendGrid nodejs API与流文件一起使用,只需将流转换为缓冲区即可。您可以使用stream-to-array将可读流转换为缓冲区。
var streamToArray = require('stream-to-array');
streamToArray(your_stream, function (err, arr) {
var buffer = Buffer.concat(arr)
sendgrid.send({
to: email,
files: [{ filename: 'File.pdf' content: buffer }]
})
})
答案 1 :(得分:0)
我最近自己也在努力解决这个问题,我只是想分享一下对我有用的东西:
//PdfKit
var doc = new PDFDocument({
size: 'letter'
});
doc.text('My awesome text');
doc.end();
//Sendgrid API
var email = new sendgrid.Email();
email.addTo ('XXX@gmail.com');
email.setFrom ('XXX@gmail.com');
email.setSubject ('Report');
email.setText ('Check out this awesome pdf');
email.addFile ({
filename: project.name + '.pdf',
content: doc,
contentType: 'application/pdf'
});
sendgrid.send(email, function(err, json){
if(err) {return console.error(err);}
console.log(json);
});
关键是将“doc”作为文件附件中的内容