首页 > 解决方案 > 如何从服务器访问pdf动态

问题描述

onclick on orderid 我想打开该 orderid 发票 pdf。如点击代码所示,我将 orderid 发送到 api,然后我从那里调用 invoice.getPDFFile(checkorderid)。在 readfile 中,我在 settings.invoicesHome 中添加路径,在 invoiceName 中添加文件名,我正在获取缓冲区。 在此处输入图像描述

.html
<a (click)="openpdf(element.orderId)">{{element.orderId}}</a>

.ts 
openpdf(orderId){
this.httpClient.get(`/adminApi/getPDFFile?orderId=${orderId}`)
  .subscribe(res => {
  console.log(res);
  window.open(res);
  });
}

.js
__api.getPDFFile = function(req , res) {
   var checkorderid = req.query.orderId;
   console.log(checkorderid);
   invoice.getPDFFile(checkorderid)
 .then(function () {
 res.send(data);
   })
   .catch(function (err) {
      console.log();
   });
}

.js
exports.getPDFFile = function(orderId){
   let invoiceName = 'invoice_' + orderId + '.pdf';
   return new Promise((resolve,reject)=>{
      fs.readFile(path.join(settings.invoicesHome, invoiceName),(err, data)=>{
          if (err) {
              reject(err); 
          }
          else{
            resolve(data); 
          }
      });
  })
  .then((data)=>{
      console.log(data); 
  })
  .catch((err)=>{
      throw err; 
  })

我想打开 pdf 文件 onclick 但我正在缓冲如何获取 pdf。

标签: angularreactjs

解决方案


尝试

openpdf(orderId){
this.httpClient.get(`/adminApi/getPDFFile?orderId=${orderId}`)
  .subscribe(res => {
     let file = new Blob([res], { type: 'application/pdf' });            
     var fileURL = URL.createObjectURL(file);
     window.open(fileURL);
  });
}

推荐阅读