使用 javascript 下载时 PDF 为空

2024-04-24

我有一个 Web 服务,可以在其响应中返回 PDF 文件内容。当用户单击链接时,我想将其下载为 pdf 文件。我在UI中编写的javascript代码如下:

$http.get('http://MyPdfFileAPIstreamURl').then(function(response){
var blob=new File([response],'myBill.pdf',{type: "text/pdf"});
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="myBill.pdf";
link.click();
});

“response”包含来自“MyPdfFileAPIstreamURl”的 servlet 输出流的 PDF 字节数组。而且该流也未加密。

因此,当我单击该链接时,会成功下载一个大小约为 200KB 的 PDF 文件。但是当我打开这个文件时,它会打开空白页。下载的 pdf 文件的起始内容在图像中。

我不明白这里出了什么问题。帮助 !

这是下载的 pdf 文件起始内容:


通过 XMLHttpRequest 解决了它xhr.responseType = 'arraybuffer'; code:

var xhr = new XMLHttpRequest();
    xhr.open('GET', './api/exportdoc/report_'+id, true);
    xhr.responseType = 'arraybuffer';
    xhr.onload = function(e) {
       if (this.status == 200) {
          var blob=new Blob([this.response], {type:"application/pdf"});
          var link=document.createElement('a');
          link.href=window.URL.createObjectURL(blob);
          link.download="Report_"+new Date()+".pdf";
          link.click();
       }
    };
xhr.send();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 javascript 下载时 PDF 为空 的相关文章