2017-08-10 26 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ファイルをresponceが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

関連する問題