gpt4 book ai didi

node.js - 在nodejs应用程序中使用PDFKit发送动态创建的PDF作为附件

转载 作者:太空宇宙 更新时间:2023-11-03 22:51:42 27 4
gpt4 key购买 nike

我正在尝试使用 PDFkit 动态创建 pdf,并希望将其作为电子邮件附件发送。继此http://pdfkit.org/demo/browser.html例子和这个https://nodemailer.com/using-attachments/文档我写了以下代码:

 var doc = new PDFDocument();
var stream = doc.pipe(blobStream());
doc.text("Howdy!!");

doc.on('end');

stream.on('finish', function() {

var htmlMailBody ='Hi'

var textMailBody = 'hi';
var mailOptions =
{
from: 'ASD', // sender address
to: 'ecell@sfitengg.org', // list of receivers
subject: 'Invitation ', // Subject line
text: textMailBody, // plaintext body alt for html
html: htmlMailBody,
attachments:[
{

filename:"TEST1.pdf",
path:stream.toBlobURL('application/pdf')


}]
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
if(error){
return console.log(error);
}
console.log('Message sent: ' + info.response);
res.redirect('/');
});



});

但是我收到以下错误:

 TypeError: listener must be a function
at PDFDocument.addListener (events.js:197:11)
at PDFDocument.Readable.on (_stream_readable.js:665:33)
at exports.getSendReport (d:\projects\PDFChecker\server\controllers\pdf.js:159:6)
at Layer.handle [as handle_request] (d:\projects\PDFChecker\node_modules\express\lib\router\layer.js:95:5)

我该如何解决呢?

最佳答案

不要使用 BlobStream。按照此处的建议写入缓冲区: how to convert pdfkit object into buffer using nodejs

const pdf = new pdfkit();

const buffers = [];
pdf.on('data', buffers.push.bind(buffers));
pdf.on('end', () => {

let pdfData = Buffer.concat(buffers);

const mailOptions = {
from: '...',
to: '...',
attachments: [{
filename: 'attachment.pdf',
content: pdfData
}]
};

mailOptions.subject = 'PDF in mail';
mailOptions.text = 'PDF attached';

return mailTransport
.sendMail(mailOptions)
.then(() => {
console.log('email sent:');
})
.catch(error => {
console.error('There was an error while sending the email:', error);
});
});

pdf.text('Hello', 100, 100);
pdf.end();

我使用了这种方法,并且能够使用带有缓冲区 Attachment 的 Nodemailer 并发送正确的 pdf。

关于node.js - 在nodejs应用程序中使用PDFKit发送动态创建的PDF作为附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40275397/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com