2017-02-27 7 views
7

मैं एक ऐसा एप्लिकेशन बनाने की कोशिश कर रहा हूं जो एक jquery अनुरोध का उपयोग करके पॉप्युलेट की गई एक HTML फ़ाइल लेगा। मैं एचटीएमएल प्राप्त करने का अनुरोध प्राप्त कर रहा हूं, पीडीएफ.क्रेट फ़ंक्शन में स्ट्रिंग पास कर रहा हूं और ईमेल के माध्यम से पीडीएफ फ़ाइल भेजने के लिए जेनरेट बफर का उपयोग कर रहा हूं। ऐसा लगता है कि फ़ाइल को ईमेल संलग्नक के रूप में संसाधित और भेजना प्रतीत होता है, हालांकि, जब मैं फ़ाइल खोलने का प्रयास करता हूं तो मुझे एक त्रुटि मिल रही है कि फ़ाइल दूषित है।node.js html-pdf रूपांतरण समस्या, फ़ाइल वापस भ्रष्ट हो रही है

code that convert html document to pdf: 
       var options = { 
        host: 'localhost', 
        path: '/salesorder/' + orderid, 
        port: '3000' 
       }; 

       http.request(options, function(response){ 
        let buffer = ''; 
        response.on('data', function (chunk) { 
         buffer += chunk; 
        }); 

        response.on('end', function() { 
        pdf.create(buffer, { 
         directory: "tmp" 
        }).toBuffer(function(err, newbuffer){ 
         if (err){ 
          reject(err); 
         } 

         if (Buffer.isBuffer(newbuffer)){ 
          resolve(newbuffer); 
         } else { 
          reject(new Error('The pdf file could not be generated at this time. Please try again later.')); 
         } 
        }); 
        }); 
       }) 
       .end(); 


code that sends the email: 
    var transporter = nodemailer.createTransport({ 
     service: 'gmail', 
     host: this.hostname, 
     auth: { 
      user: this.smtpusername, 
      pass: this.smtppassword 
     } 
    }); 

    var mailOptions = { 
     from: fromaddress, // sender address 
     to: toaddresslist, // list of receivers 
     subject: subject, // Subject line 
     text: text 
    }; 

    if (attachments){ 
     mailOptions.attachments = [ 
      { // binary buffer as an attachment 
       filename: 'invoice.pdf', 
       content: new Buffer(attachments.toString(), 'base64'), 
       contentType: 'application/pdf' 
      } 
     ]; 
    } 

मैं रूपांतरण करने के लिए html-pdf node.js पैकेज का उपयोग कर रहा हूं। मुझे यहां क्या समझ नहीं आ रहा है? मैं http.request विधि से प्राप्त एचटीएमएल ले रहा हूं और यदि मैं इसे console.log से बाहर प्रिंट करता हूं तो मैं उत्पन्न कोड देख सकता हूं। अब मुझे पता है कि मैं टेक्स्ट फ़ील्ड्स और लेबल पॉपुलटिंग नहीं देख रहा हूं, इसलिए ऐसा लगता है कि jquery प्रसंस्करण नहीं कर रहा है।

उत्तर

4

मुझे नोडेमेलर के साथ अनुभव नहीं हुआ है, लेकिन ऐसा लगता है कि आप अपने अनुलग्नक पर encoding: 'base64' खो रहे हैं। See the docs here.

+1

समाधान एन्कोडिंग का संयोजन होने और संलग्नक के बजाय attachments.toString() का उपयोग करके समाप्त हुआ। – user1790300

संबंधित मुद्दे