【发布时间】:2019-11-27 11:32:45
【问题描述】:
我遇到了一个问题,当我必须将创建的文档pipe() 发送到多个目标时,在我的例子中是一个 HTTP 响应和一个使用 node-mailer 的电子邮件附件。首次在电子邮件的附件中使用后,没有任何内容被传送到响应中(当从客户端调用它时,PDF 有 0 个字节)。
响应控制器:
const doc = await createPdf(course.name, lastRecordDate, ctx);
// Send a notificiation email with attachment
if (query.hasOwnProperty('sendEmail') && query.sendEmail === 'true') {
await sendNotificationEmail(doc, course, ctx);
}
doc.pipe(res);
res.contentType('application/pdf');
发送邮件功能:
async function sendNotificationEmail(doc: any, course: Course, ctx: Context) {
const attachment = {
filename: `${course.name}-certificate.pdf`,
contentType: 'application/pdf',
content: doc
};
return SMTPSendTemplateWithAttachments(
ctx,
['somememail@test.si'],
`${course.name}`,
'en-report-created',
{
firstName: ctx.user.firstName,
courseName: course.name
},
[attachment]
);
}
如果我删除发送电子邮件的功能,PDF 通常会通过管道传输到回复,我可以从客户端下载它。
我试图找到一种克隆流的方法(据我所知,PDFKit 的文档是一个流),但没有成功。
任何解决方案都会很有帮助。
【问题讨论】:
标签: node.js pdf nodemailer node-streams node-pdfkit