angular - 如何从服务器访问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。
解决方案
尝试
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);
});
}