我正在使用PDFKit和NodeJS动态生成PDF文档,我想将所述文档附加到电子邮件中。此刻我通过NPM使用Mandril-API。
我可以毫无问题地生成PDF并通过以下方式在浏览器中显示:
doc.pipe(res);
我可以毫无问题地发送电子邮件,但我在获取正确的PDF内容方面失败了。我相当肯定我99%的方式 - 但我错过了一些东西。我使用Google / StackOverflow等进行了大量的阅读和测试,但我被卡住了。
我得到的内容是,当我进行base64解码时,我得到:
%PDF-1.3%7 0 obj<< / Predictor 15
我设法让我的PDF附件的有效大小为445KB 但这是电子邮件的内容:
--_ av-Ti-H6i8tBBHL4BgoXnyC2Q Content-Type:application / pdf Content-Transfer-Encoding:base64 Content-Disposition:attachment; 文件名=" mytestPDF.pdf"
PDF1370obj / Predictor15 / COLORS1 / BitsPerComponent8 / Columns100e ndobj60obj /类型/ x对象/亚型/图像/ BitsPerComponent8 / WIDT H100 / Height19 /过滤/ FlateDecode / DecodeParms70R / ColorSpace中/ I ndexed / DeviceRGB25580R / Length1751streamxdSSNEhGIRTRkWbY / nHaO MJln7t + vv89ylF111PlYNB9Nm6e9DENsd9FxLFUbOjrgt + ErRgWtj9vPCTBH oohMHl9oZ7IdpC / hxusjTHFFMcxhwIxPlbNorOB + bH8exrrA1DUnzKzq / UXI xT456nxtB59fQNiIrBT2apETJZieZvltpeThrObiZ4ydtY0koKJ2Epb940A1 iXyehONQVXiZr8jRP / NJ3bmjHA0sygAou4Q =
虽然我已经搞砸了好几个小时了,但我最好的预感是我的PDF内容中有换行/换行错误。我获取PDF内容的方法是创建一个名为buffers的数组,然后:doc.on(' data',buffers.push.bind(buffers));
我想我需要添加/ n或/ r等...但我已经和NodeJS和AngularJS一起工作了一个月左右,而且我几乎知道我做错了是因为我过度复杂化了这个问题......所以我向大家求助,并希望有一种简单的方法可以将我用PDFKit创建的新PDF文档中的内容附加到使用NodeJS的电子邮件中。
提前谢谢你......请原谅我的漫无边际,但是我大约8小时前开始这个(现在是我现在凌晨3:25)。 :)
答案 0 :(得分:9)
我最近在通过node.js向mandrill发送电子邮件pdf附件时遇到了同样的问题,但设法解决了这个问题。
这是我做的:
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如果您需要其他帮助=)