流星通过base64字符串然后通过电子邮件附件在服务器上创建PDF

时间:2018-07-06 17:23:22

标签: javascript node.js meteor

客户端(使用html2pdf包):

'click #testClick' (event) {
  event.preventDefault();
  var element = document.getElementById('testReport');
  var opt = {
    jsPDF: {
      orientation: 'landscape'
    }
  }
  html2pdf().from(element).set(opt).outputPdf().then((result) => {
    Meteor.call('testPDF', result, function(error, res) {
      if (error) {
        console.log(error.message);
      } else {
        console.log("email sent");
      }
    });
  });
}

服务器方法:

testPDF: function(data) {
  fs = Npm.require('fs');
  base64String = new Buffer(data).toString('base64');
  let dir = process.cwd();
  let fileName = 'file.pdf'
  fs.writeFile(dir + fileName, base64String, 'base64', function(err, res) {
    if (err) {
      console.log('Err ', err);
    }
  });

  //Want this to work, but attachment is not working
  // Email.send({
  //   to: "test@test.com",
  //   from: "noreply@something.com",
  //   subject: "PDF",
  //   html: '<body><h1>Hello</h1></body>',
  //   attachments: [
  //       {
  //         filename: fileName
  //       }
  //     ]
  // });
}

它实际上确实创建了PDF文件,但是我无法打开它。我收到一个损坏的错误。如果我在html2pdf包中使用.save()方法,那么该方法有效,并且可以在浏览器中下载.pdf。基本上,我只是试图从HTML元素创建.PDF并通过电子邮件发送...

0 个答案:

没有答案