使用window.open在chrome新版本上显示base64 pdf数据

Git*_*ade 3 javascript pdf google-chrome angularjs

我在新窗口中使用以下代码将开放的base64数据作为pdf

var pdf=response.data.base64;       
var doc = document.createElement("a");
doc.href ='data:application/octet-stream;base64,' + pdf;
doc.target = "blank";
doc.click();
$window.open('data:application/pdf;base64,' + pdf);
Run Code Online (Sandbox Code Playgroud)

这是工作的罚款Chrome版本56.0.2924.87但61.0.3163.100版[参考截图]不工作
示例代码plunker

在此处输入图片说明

小智 8

var pdfResult = data_.data.info.result.result;

let pdfWindow = window.open("")
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64, " + encodeURI(pdfResult) + "'></iframe>")
Run Code Online (Sandbox Code Playgroud)

这用于在浏览器选项卡中显示base64 pdf。

  • 我认为上面答案中的 data_.data.info.result.result 令人困惑。对于尝试实施上述解决方案以在新选项卡中打开 base64 PDF 的人,只需替换 data_.data.info.result.result 如下: pdfResult = [your base64 PDF string] (2认同)

小智 5

我在使用 AngularJS 时遇到了类似的问题。这就是我的管理方式,在我的情况下,我从 URL 加载文件作为数组缓冲区。希望能帮助到你。

$http({
    method: 'GET',
    url: '/api/transaction-file/'+id,
    responseType:'arraybuffer'
}).then(function(response){
    var file = new Blob([response.data], {type: 'application/pdf'});
    var fileURL = URL.createObjectURL(file);
    window.open(fileURL);
}, function(response){
    //Error
});
Run Code Online (Sandbox Code Playgroud)