首页 > 解决方案 > 通过角度前端下载在nodejs中使用pdfkit库创建的PDF

问题描述

async createpdf(){

const doc = new PDFDocument();

doc.pipe(fs.createWriteStream('example.pdf'));

// content of the pdf

doc.end();
}

我为我的项目使用了 nodejs 和 angular。为了导出 pdf,我使用了 pdfkit 库并导出了 pdf。但是我需要在单击 Angular 前端的按钮时下载 pdf。您能解释一下单击角度前端中的按钮时如何下载pdf吗?

这是我在 component.ts 中添加的代码

exportToPdf(){
  this.classroomService.createpdf();
  this.subscription = this.classroomService.alertMessageOccured
  .subscribe((alert) => {
   if (alert.code == 200) {
    this.alertService.clear();
          this.alertService.success(alert.message);


        } else {
          this.alertService.clear();
          this.alertService.error(alert.message);
        }
 })
}

这是按钮的代码

 <button class="btn btn-primary btn-sm float-right" (click)="exportToPdf()">
              Export to PDF
  </button>

标签: node.jsangularpdfkit

解决方案


成功创建pdf后,将成功/失败结果返回给您的客户端

为了让用户知道它是否失败,

如果成功,则向下载路线发出请求

app.get('/download-pdf', function(req, res){
  const pdf_file = `${__dirname}/your_file.pdf`;
  res.setHeader('Content-type', 'application/pdf');
  res.download(pdf_file); 
});

这是一个简单的示例,但请记住进一步返回一个唯一 ID 以下载特定文件,或进行任何其他身份验证检查。


推荐阅读