2017-08-10 73 views
0

我使用html-pdf從HTML創建PDF文件。現在我想按下HTML上的按鈕來下載文件。我知道如何強制下載文件。現在我想知道如何強制下載生成的PDF文件。下載PDF文件而不將其保存在服務器nodejs上

PDF生成代碼:

var fs = require('fs'); 
var pdf = require('html-pdf'); 
var html = fs.readFileSync('PDF.html', 'utf8'); 
var options = { "height": "9in",  // allowed units: mm, cm, in, px 
    "width": "8in" ,orientation : "portrait","header": { 
    "height": "5mm",border: { 
    "top": "2in",   // default is 0, units: mm, cm, in, px 
    "right": "1in", 
    "bottom": "2in", 
    "left": "1.5in" 
    }, 
    "base": "", 
    },}; 


pdf.create(html).toStream(function(err, stream){ 
    stream.pipe(fs.createWriteStream('foo.pdf')); 
}); 

文件下載代碼:

var http = require('http'); 


http.createServer(function (req, res) { 
var text_ready = "This is a content of a txt file." 


res.writeHead(200, {'Content-Type': 'application/force-download','Content-disposition':'attachment; filename=file.txt'}); 

res.end(text_ready); 
}).listen(8080, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:8080/'); 

有沒有一種方法,我可以結合這兩種?或者更好的方式下載生成的PDF文件而不保存它?我讓他們兩人分開工作。我對Node.js很新穎。

回答

1

可以通過管道將您的PDF來應對由於性反應的實現Writable Stream

'use strict'; 
var http = require('http'); 
var fs = require('fs'); 
var pdf = require('html-pdf'); 

http.createServer(function (req, res) { 

    fs.readFile('./PDFFormat.html', 'utf8', function (err, html) { 
     if (err) { 
      //error handling 
     } 
     pdf.create(html).toStream(function (err, stream) { 
      if (err) { 
       //error handling 
      } 
      res.writeHead(200, { 
       'Content-Type': 'application/force-download', 
       'Content-disposition': 'attachment; filename=file.pdf' 
      }); 
      stream.pipe(res); 
     }); 
    }); 
}).listen(8080, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:8080/'); 
+0

你能解釋一下,用一個小例子。我是新來的。 – Prakash

+0

我更新了我的評論。希望這可以幫助。檢查節點文檔。 – Rayz

相關問題