【问题标题】:How to download the pdf file after generated in nodejs在nodejs中生成后如何下载pdf文件
【发布时间】:2020-01-20 19:48:00
【问题描述】:

我正在 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);
          });
     });
   });
 }

【问题讨论】:

  • 你在使用 expressjs 吗?这应该对您有所帮助:stackoverflow.com/a/21788474/1906361
  • 我试过了,还是不行。
  • 你可以试试这个npmjs.com/package/pdfmake
  • 生成 PDF 运行良好。我想通过浏览器下载pdf。
  • 如果我没记错的话,在 Chrome 中你可以使用原生 Chrome pdf 阅读器来做到这一点,或者你想点击 Angular 应用程序中的某种下载按钮来做到这一点?

标签: node.js angular


【解决方案1】:

我已经解决了这个问题。

Node.js

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

【讨论】:

    【解决方案2】:

    创建 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');
    

    【讨论】:

      猜你喜欢
      • 2020-12-18
      • 2017-06-08
      • 1970-01-01
      • 2011-04-04
      • 2021-07-13
      • 2017-09-26
      • 2023-03-30
      • 1970-01-01
      • 2015-07-09
      相关资源
      最近更新 更多