2016-04-19 13 views
0

Ich versuche, den Dateinamen der PDF-Datei von der npm-Modul html-pdf zu ändern.Ändern Sie den Dateinamen von toStream() in node.js html-pdf npm Modul

Das Problem ist, ich nicht möchte eine Kopie der PDF speichern, streamen Sie es einfach an einen E-Mail-Dienst (Mailgun) und dann senden Sie es ab. Ich habe alles funktioniert, aber wenn ich die E-Mail erhalte, hat die Datei einen Standardnamen, den ich ändern möchte. Hat jemand Erfahrung damit?

Dank

var pdf = require('html-pdf'); 
var Mailgun = require('mailgun-js'); 

pdf.create(result).toStream(function(err, stream) { 
    var self = this; 
    if (err) return console.log(err); 

    //set mailgun parameters 
    var mail_data = { 
     from: '[email protected]', 
     to: '[email protected]', 
     subject: 'subject line', 
     html: result, 
     attachment: stream 
    } 
    //send email 
    mailgun.messages().send(mail_data, function (err, body) { 
     if (err) { 
      res.render('error', { error : err}); 
      console.log("got an error: ", err); 
     } 
     else { 
      console.log(body); 
      res.send('ok'); 
     } 
    }); 

}); 

Antwort

1
var pdf = require('html-pdf'); 
var Mailgun = require('mailgun-js'); 

pdf.create(result).toBuffer(function(err, buffer) { 
    var self = this; 
    if (err) return console.log(err); 

    var attch = new mailgun.Attachment({data: buffer, filename: 'myattach.pdf'}); 

    //set mailgun parameters 
    var mail_data = { 
     from: '[email protected]', 
     to: '[email protected]', 
     subject: 'subject line', 
     html: result, 
     attachment: attch 
    } 
    //send email 
    mailgun.messages().send(mail_data, function (err, body) { 
     if (err) { 
      res.render('error', { error : err}); 
      console.log("got an error: ", err); 
     } 
     else { 
      console.log(body); 
      res.send('ok'); 
     } 
    }); 

}); 

Von https://github.com/bojand/mailgun-js#attachments

+0

Danke für die Antwort, ich dachte, das ein HTML-pdf Problem. Ich habe diese Lösung ausprobiert und es scheint immer noch nicht zu funktionieren. Die E-Mail wird gesendet, aber es ist keine Anlage vorhanden. –

+0

Der Link, den ich gepostet habe, erwähnt, dass content-type und content-length des Anhangs notwendig sind, wenn der Anhang ein Readable ist, ansonsten ignoriert mailgun den Anhang. Da es keine einfache Möglichkeit gibt, die Länge eines Readable zu kennen, bevor es vollständig verbraucht ist, und html-pdf eine toBuffer-Methode hat, habe ich die Antwort bearbeitet, um stattdessen einen Puffer zu verwenden. –

+0

oh toll. Das macht Sinn, vielen Dank! –