这是create pdf file的PDFMake的代码片段之一:

var pdfDoc = printer.createPdfKitDocument(docDefinition);
pdfDoc.pipe(fs.createWriteStream('pdfs/absolute.pdf'));
pdfDoc.end();


这是attachment option in NodeMailer之一:

{
  // stream as an attachment
  filename: 'text4.txt',
  content: fs.createReadStream('file.txt')
}


我能够创建pdf并将其保存到目录中的文件中,并将该保存的文件附加到电子邮件中,但是我想直接将pdf的输出发送到电子邮件的附件内容,而不将pdf输出保存到文件。

我试图了解nodejs管道和流功能,但不了解它们是否满足我的要求。我认为应该可以通过流和管道实现,但不知道如何实现。

我想防止将pdf输出保存到文件,因为使用创建pdf文件和发送电子邮件的功能可以有多个用户。可能存在一个用户创建的pdf文件将被另一用户覆盖的情况。

最佳答案

您可以代替管道,将整个pdfdoc传递给附件

var pdfDoc = printer.createPdfKitDocument(docDefinition);
pdfDoc.end();


接着:

attachments: {
    // stream as an attachment
    filename: 'text4.pdf',
    content: pdfDoc
}

07-25 21:25