2014-09-17 3 views
5

Я использую PDFKit и NodeJS для динамического создания PDF-документов, и я хотел бы приложить указанный документ к электронному письму. В данный момент я использую Mandril-API через NPM.nodejs pdfkit Присоединить динамически сгенерированный PDF к электронной почте (Mandrill-API)

я могу генерировать PDF без выдачи и отобразить его в браузере через:

doc.pipe (Рез);

Я могу отправить электронное письмо без проблем, но я ошибся в получении правильного содержимого в формате PDF. Я абсолютно уверен, что я на 99% оттуда, но я чего-то не хватает. Я проделал тонну чтения и тестирования с помощью Google/StackOverflow и т. Д., Но я застрял.

Я получаю содержание, когда я делаю base64 расшифровывает я получаю:

% PDF-1.3% 7 0 OBJ < </Предиктор 15

мне удалось получить мое вложение PDF в иметь действительный размер 445KB , но это содержание электронной почты:

--_ пр-Ti-H6i8tBBHL4BgoXnyC2Q Content-Type: применение/PDF Content-Transfer-Encoding: base64 Content-Disposition: вложение; имя файла = "mytestPDF.pdf"

PDF1370obj/Predictor15/цвета1/BitsPerComponent8/Columns100e ndobj60obj/Тип/XObject/Подтип/Image/BitsPerComponent8/ h100 ширине, в/Height19/Фильтр/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 (буферы));

Я предполагаю, что мне нужно добавлять/n или/r и т. Д., Но я работаю с NodeJS и AngularJS в течение месяца или около того, и я знаю почти ВСЕ, что я делаю неправильно, потому что я «Я слишком усложняю этот вопрос ... поэтому я обращаюсь к вам с ребятами и надеюсь, что есть простой способ прикрепить контент из нового PDFDocument, который я создаю с помощью PDFKit, к электронной почте с помощью NodeJS.

Благодарим вас за то, что прошу прощения, но я начал это примерно 8 часов назад (сейчас 3:25 утра). :)

ответ

9

У меня недавно была такая же проблема с размещением электронной почты для вложения PDF в mandrill через node.js, но ей удалось ее решить.

Вот что я сделал:

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, если вам нужна дополнительная помощь =)

+0

Спасибо, mraxus, это именно то, что мне нужно. Я ценю вашу помощь! – user2348688

+1

Добро пожаловать.Рад, что моя борьба тоже могла помочь вам =) – mraxus

+0

Любая идея, что такое переменные 'Buffer' и' pdfBuffer'? – 2dvisio

Смежные вопросы