在nodejs中生成后如何下载pdf文件

时间:2019-09-19 18:04:53

标签: node.js angular

我正在Node.js 10.x和angular 6.x中构建一个Web应用程序。我希望生成一个PDF并通过浏览器下载。

  • 角度6.x
generatePDF(params): any {
    return this.http.post(this.url('generatePDF'), params, this.getRequestOptions())
      .pipe(map((res: any) => {
          return res;
        })
      );
}
  • Node.js

async generatePDF(options = { format:'A4' }) {
   return new Promise((resolve, reject) => { ejs.renderFile(this.templateName, this.data, (err, res) => {

        if (err) {
          return reject(err);
        }
        pdf.create(res, options)
          .toFile(this.fileName,  (err, res) => {
            if (err) {
              return reject(err);
            }
            resolve(res);
          });
     });
   });
 }

2 个答案:

答案 0 :(得分:0)

我已经如下解决了这个问题。

Node.js

let pdffilename = username + '_' + gameName.replace(/ /g, "_") + '.pdf'; 
pdfReport = new Report(gameName, ejsfilename, pdffilename, refined_score);  
await pdfReport.generatePDF();
res.sendFile(pdfReport.fileName);

答案 1 :(得分:0)

创建PDF路径后,您可以使用以下代码下载文件

  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'X-Requested-With');
  res.header('content-type', 'application/pdf');


  res.download(PDF_PATH, PDF_NAME + '.pdf');