3

PDF ファイルを作成するための PDFMake のコード スニペットの 1 つを次に示します。

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

NodeMailerの添付オプションの 1 つを次に示します。

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

PDFを作成してディレクトリ内のファイルに保存し、その保存したファイルを電子メールに添付することはできますが、PDF出力をファイルに保存せずに、PDFの出力を電子メールの添付コンテンツに直接送信したいファイル.

nodejs のパイプとストリームの機能を理解しようとしましたが、要件を満たすには理解できませんでした。ストリームとパイプを介して可能であるべきだと思いますが、達成する方法がわかりません。

PDFファイルを作成して電子メールを送信する機能を使用するユーザーが複数いる可能性があるため、PDF出力のファイルへの保存を防止したい。あるユーザーが作成した PDF ファイルが別のユーザーによって上書きされる場合があります。

4

4 に答える 4

0

これが私がしたことです。Meteor アプリで動作します。

クライアント側:

var docDefinition = {
    content: [
        'First paragraph'
    ]
};

var data;
pdfMake.createPdf(docDefinition).getBase64(function(encodedString) {
    data = encodedString;
    Meteor.call("sendPDFEmail", data);
});

サーバ側

sendPDFEmail: function(thepdf){
    Email.send({
        to: "receiver",
        from: "sender",
        subject: "Test",
        html: "text",
        attachments: [
            {
                filename: "test.pdf",
                type: "application/pdf",
                content: Buffer.from(thepdf, 'base64')
            }
        ]
    });
},
于 2018-09-19T13:25:32.973 に答える