Отправка PDF из pdfkit через серверную часть nodejs - PullRequest
0 голосов
/ 08 января 2019

Я видел этот вопрос, но мой код, кажется, немного отличается и не работает. Отправка PDF, созданного динамически в виде вложения, с использованием PDFKit в приложении nodejs

главное отличие в том, что я отправляю это электронное письмо из бэкэнда, а не из браузера.

Также отметим, что сгенерированный файл хорошо сгенерирован, поэтому, вероятно, проблема заключается в передаче его по электронной почте.

const Email = require('email-templates');
const PdfKit = require('pdfkit');
const SVGToPDF = require('svg-to-pdfkit');
const fs = require('fs');

const service =  new Email({
  message: {
    from: 'aaron.test@gmail.com'
  },
  send: true
  transport: require('../config/smtp.json') // my smtp config. Works without attachment
});

function generatePdfAndSend() {
 var doc = new PdfKit();

    const stream = doc.pipe(fs.createWriteStream("output.pdf"));

    doc.font('backend/fonts/MADE Canvas Regular PERSONAL USE.otf')
      .fontSize(25)
      .text('sample text', 100, 100);

    fs.readFile('backend/images/Happy Easter 5.svg', 'utf8', (err, contents) => {
      SVGToPDF(doc, contents, 100, 200, {});
      doc.end();
stream.on('finish', function() {
          sendEmail("templateName", "myEmail", doc);
        });

    });
}


function sendEmail(template, to, attachment) {
    service.send({
    template: template,
    message: {
      to: to,
      attachments: [
        {
          filename: 'text1.pdf',
          content: attachment,
          contentType: 'application/pdf'
        }
      ]
    },
    locals: vars

  })
    .then(console.log).catch(console.error);
}

Ответы [ 2 ]

0 голосов
/ 30 июня 2019

Я использую следующее, путь к заметке - это путь к сохраненному pdf, а вложения - это массив объектов вложения, и он работает как шарм

 attachments:[{
            filename:'reports.pdf',
            path: __dirname+'/files/output.pdf'//,
            //contentType: 'application/pdf'
        }]
0 голосов
/ 09 января 2019

Я не вижу ничего в документации, которая позволяет передавать объект как вложение.

Вместо передачи объекта PdfKit в функцию sendEmail. Передайте место на диске, куда вы выводите файл.

https://community.nodemailer.com/using-attachments/

...