2014-09-17 12 views
5

Sto utilizzando PDFKit e NodeJS per generare dinamicamente documenti PDF e desidero allegare il suddetto documento a un'e-mail. In questo momento sto utilizzando Mandril-API tramite NPM.nodejs pdfkit Allegare PDF generati dinamicamente all'e-mail (Mandrill-API)

posso generare il PDF senza emissione e visualizzarla nel browser tramite:

doc.pipe (res);

Posso inviare un'e-mail senza problema, ma ho fallito miseramente nell'ottenere il giusto contenuto PDF. Sono abbastanza certo di essere il 99% del modo in cui ci sono - ma mi manca qualcosa. Ho fatto un sacco di letture e test usando Google/StackOverflow ecc. Ma sono bloccato.

io sono sempre contenuti che quando faccio una decodifica Base64 ottengo:

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

sono riuscito a ottenere il mio allegato PDF a hanno una dimensione valida di 445KB , ma questo è il contenuto della e-mail:

--_ av-Ti-H6i8tBBHL4BgoXnyC2Q Content-Type: application/pdf Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename = "mytestPDF.pdf"

PDF1370obj/Predictor15/Colors1/BitsPerComponent8/Columns100e ndobj60obj/tipo/XObject/sottotipo/Immagine/BitsPerComponent8/Widt H100/Height19/Filter/FlateDecode/DecodeParms70R/ColorSpace/I ndexed/DeviceRGB25580R/Length1751streamxdSSNEhGIRTRkWbY/nHaO MJln7t + vv89ylF111PlYNB9Nm6e9DENsd9FxLFUbOjrgt + ErRgWtj9vPCTBH oohMHl9oZ7IdpC/hxusjTHFFMcxhwIxPlbNorOB + bH8exrrA1DUnzKzq/UXI xT456nxtB59fQNiIrBT2apETJZieZvltpeThrObiZ4ydtY0koKJ2Epb940A1 iXyehONQVXiZr8jRP/NJ3bmjHA0sygAou4Q =

Anche se ho lavorato per ore in questo modo, la mia migliore impressione è che ho errori di interruzione di riga/nuova riga nel mio contenuto PDF. Il modo in cui ottengo il mio contenuto PDF è la creazione di un array chiamato buffer, quindi: doc.on ('data', buffers.push.bind (buffer));

Suppongo di dover aggiungere/n o/r ecc ... ma ho lavorato con NodeJS e AngularJS per circa un mese ora e so quasi che TUTTO ho sbagliato perché sto complicando troppo la questione ... quindi mi rivolgo a voi gente e spero che ci sia un metodo semplice per allegare il contenuto del nuovo PDFDocument che creo con PDFKit a una e-mail usando NodeJS.

Grazie in anticipo ... per favore perdona il mio vagabondaggio, ma l'ho iniziato circa 8 ore fa (sono le 3:25 della mia ora). :)

risposta

9

Recentemente ho avuto lo stesso problema con la pubblicazione di un allegato di posta elettronica in formato pdf per mandrillare tramite node.js ma sono riuscito a risolverlo.

Ecco quello che ho fatto:

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

Spero che questo aiuta. Ping se hai bisogno di ulteriore aiuto =)

+0

Grazie mraxus, questo è esattamente ciò di cui avevo bisogno. Apprezzo la tua assistenza !! – user2348688

+1

Sei il benvenuto.Sono contento che la mia lotta potrebbe aiutarti ugualmente =) – mraxus

+0

Hai idea di cosa siano queste variabili 'Buffer' e' pdfBuffer'? – 2dvisio

Problemi correlati