2014-09-17 8 views
5

Używam PDFKit i NodeJS do dynamicznego generowania dokumentów PDF, a ja chciałbym dołączyć wspomniany dokument do wiadomości e-mail. W tej chwili używam Mandril-API przez NPM.nodejs pdfkit Dołącz dynamicznie generowany plik PDF do wiadomości e-mail (Mandrill-API)

mogę generować pliki PDF bez problemu i wyświetlić go w przeglądarce za pomocą:

doc.pipe (OZE);

Mogę wysłać wiadomość e-mail bez problemu, ale nie udało mi się uzyskać właściwej zawartości PDF. Jestem prawie pewien, że mam 99% drogi - ale czegoś mi brakuje. Zrobiłem mnóstwo czytania i testowania za pomocą Google/StackOverflow itp., Ale utknąłem.

jestem coraz zawartości że kiedy zrobić dekodowania base64 uzyskać:

% PDF-1.3% 7 0 OBJ < </Predictor 15

udało mi się dostać mój załącznik PDF do mieć poprawny rozmiar 445KB , ale jest to treść wiadomości e-mail:

--_ av-Ti-H6i8tBBHL4BgoXNYC2Q Typ treści: application/pdf Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename = "mytestPDF.pdf"

PDF1370obj/Predictor15/colors1/BitsPerComponent8/Columns100e ndobj60obj/Typ/XObject/Podtyp/Obraz/BitsPerComponent8/Widt h100/Height19/Filtr/FlateDecode/DecodeParms70R/ColorSpace/I ndexed/DeviceRGB25580R/Length1751streamxdSSNEhGIRTRkWbY/nHaO MJln7t + vv89ylF111PlYNB9Nm6e9DENsd9FxLFUbOjrgt + ErRgWtj9vPCTBH oohMHl9oZ7IdpC/hxusjTHFFMcxhwIxPlbNorOB + bH8exrrA1DUnzKzq/UXI xT456nxtB59fQNiIrBT2apETJZieZvltpeThrObiZ4ydtY0koKJ2Epb940A1 iXyehONQVXiZr8jRP/NJ3bmjHA0sygAou4Q =

Pomimo tego, że przez wiele godzin zajmowałem się tą kwestią, moim najlepszym przeczuciem jest to, że mam błędy linii/nowej linii w mojej zawartości PDF. Sposób, w jaki otrzymuję treść PDF, polega na utworzeniu tablicy o nazwie buffer, a następnie: doc.on ("data", buffers.push.bind (bufory));

Przypuszczam, że muszę dodać/n lub/r etc ... ale pracuję z NodeJS i AngularJS od miesiąca lub teraz i wiem prawie wszystko, co robię źle, ponieważ nadmiernie komplikuje sprawę ... dlatego zwracam się do was i mam nadzieję, że istnieje prosta metoda dołączenia treści z nowego PDFDocument, który utworzę z PDFKit do e-maila za pomocą NodeJS.

Z góry dziękuję ... proszę, wybaczcie mi chaos, ale zacząłem to około 8 godzin temu (teraz jest 3:25 nad ranem). :)

Odpowiedz

9

Niedawno miałem ten sam problem z wysłaniem załącznika do wiadomości e-mail w formacie pdf na mandrill przez node.js, ale udało się go rozwiązać.

Oto co zrobiłem:

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); 
     }); 
    }); 

Mam nadzieję, że to pomaga. Pinguj, jeśli potrzebujesz dodatkowej pomocy =)

+0

Dziękuję mraxus, to jest dokładnie to, czego potrzebowałem. Doceniam twoją pomoc !! – user2348688

+1

Proszę bardzo.Cieszę się, że moja walka mogłaby ci pomóc =) – mraxus

+0

Czy masz pojęcie, czym są te zmienne 'Bufor' i' pdfBuffer'? – 2dvisio

Powiązane problemy