我正在使用 PDFKit 和 NodeJS 动态生成 PDF 文档,我想将上述文档附加到电子邮件中。目前我正在通过 NPM 使用 Mandril-API。
我可以毫无问题地生成 PDF 并通过以下方式在浏览器中显示它:
doc.pipe(res);
我可以毫无问题地发送电子邮件,但我在获取正确的 PDF 内容方面惨遭失败。我相当确定我已经完成了 99% - 但我遗漏了一些东西。我已经使用 Google/StackOverflow 等进行了大量阅读和测试,但我被卡住了。
我得到的内容是,当我进行 base64 解码时,我得到:
%PDF-1.3 % 7 0 obj << /Predictor 15
I have managed to get my PDF attachment to have a valid size of 445KB but this is the content of the email:
--_av-Ti-H6i8tBBHL4BgoXnyC2Q Content-Type: application/pdf Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mytestPDF.pdf"
PDF1370obj/Predictor15/Colors1/BitsPerComponent8/Columns100e ndobj60obj/Type/XObject/Subtype/Image/BitsPerComponent8/Widt h100/Height19/Filter/FlateDecode/DecodeParms70R/ColorSpace/I ndexed/DeviceRGB25580R/Length1751streamxdSSNEhGIRTRkWbY/nHaO MJln7t+vv89ylF111PlYNB9Nm6e9DENsd9FxLFUbOjrgt+ErRgWtj9vPCTBH oohMHl9oZ7IdpC/hxusjTHFFMcxhwIxPlbNorOB+bH8exrrA1DUnzKzq/UXI xT456nxtB59fQNiIrBT2apETJZieZvltpeThrObiZ4ydtY0koKJ2Epb940A1 iXyehONQVXiZr8jRP/NJ3bmjHA0sygAou4Q=
虽然我已经为此纠结了几个小时,但我最好的预感是我的 PDF 内容中有换行符/换行符错误。我获取 PDF 内容的方法是创建一个名为缓冲区的数组,然后: doc.on('data', buffers.push.bind(buffers));
我假设我需要添加/n 或/r 等...但我已经使用 NodeJS 和 AngularJS 一个月左右了,我知道我做错的几乎所有事情都是因为我'我把事情搞得太复杂了……所以我求助于你们,希望有一种简单的方法可以将我使用 PDFKit 创建的新 PDFDocument 的内容附加到使用 NodeJS 的电子邮件中。
提前谢谢你...请原谅我的胡言乱语,但我大约 8 小时前开始这个(现在是我的时间凌晨 3:25)。 :)
请您参考如下方法:
我最近在通过 node.js 将电子邮件 pdf 附件发布到 mandrill 时遇到了同样的问题,但设法解决了它。
这是我做的:
generatePdf(inputData, function (err, doc) {
if (err) return callback(err);
var bufferChunks = [];
doc.on('readable', function() {
// Store buffer chunk to array
bufferChunks.push(doc.read());
});
doc.on('end', function() {
var pdfBuffer = Buffer.concat(bufferChunks),
pdfBase64String = pdfBuffer.toString('base64');
// This string is perfectly ok to use as an attachment to the mandrillAPI
sendMandrillEmailWithAttachment(pdfBase64String);
});
});
希望对您有所帮助。如果您需要其他帮助,请 Ping =)