1

I'm building a web application in Node.js 10.x and angular 6.x. I wish to generate a PDF and download it via browser.

  • angular 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 Answers2

0

I have solved this problem as follows.

Node.js

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

After Creation of PDF path , you can use the following code to download your file

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