如何在IE的新选项卡中显示PDF而不下载它

时间:2018-03-13 23:33:05

标签: javascript html angular cross-browser

似乎IE不允许直接打开blob。你必须使用msSaveOrOpenBlob。但有什么方法可以转换它。我确实需要在没有下载的情况下将PDF显示到IE的新选项卡中,或者至少用户不应该进行交互,并且不会将其下载到例如IE中。系统临时文件夹。 Safai在同一个窗口打开它而不是新标签,但主要问题是IE。使所有浏览器工作的主要思路相似,并在新标签中打开它以进行预览。

let blob = new Blob([response], {
    type: 'application/pdf'
});

if (window.navigator && window.navigator.msSaveOrOpenBlob) {//IE
    window.navigator.msSaveOrOpenBlob(response, "TheDocumentToShow.pdf");
} else {
    var fileURL = URL.createObjectURL(response);
    if (navigator.userAgent.indexOf("Chrome") != -1 || navigator.userAgent.indexOf("Firefox") != -1){
        let win = window.open(fileURL, '_blank');                        
    } else { //Safari & Opera iOS
        window.location.href = fileURL;
    }
}

6 个答案:

答案 0 :(得分:4)

您可以使用此库:https://github.com/VadimDez/ng2-pdf-viewer。 它建立在pdfjs之上,可以将pdf集成到您自己的页面中。您可以创建一个路径,该路线将链接作为参数并在新选项卡中打开。

答案 1 :(得分:2)

这个简单的a链接适用于IE11,Edge和Chrome:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <a href="file.pdf" target="_blank">Click</a>
</body>
</html>

它在新标签页中打开pdf而不下载。

答案 2 :(得分:1)

尝试pdfjs https://mozilla.github.io/pdf.js/

设置Viewer.php,您可以在其中传递要显示的pdf文件的链接,只需在新标签页中将其打开,例如example.com/viewer.php?pdfLink=/files/path/to/doc.pdf

答案 3 :(得分:1)

<script>
function pdf() {
window.open("filename.pdf","_blank");
}
</script>
<div onclick="pdf();">Click here</div>
这是你想要的吗?这并不使用锚标记,并且在所有浏览器中都受支持。 Click here for more information.

答案 4 :(得分:1)

您可以尝试使用这种角度包(https://www.npmjs.com/package/ng2-pdfjs-viewer)。它有一个简单的选项在新标签页中打开pdf 。使用属性[externalWindow]="true"

代码
<ng2-pdfjs-viewer [externalWindow]="true" pdfSrc="samplepdf.pdf"></ng2-pdfjs-viewer>

答案 5 :(得分:0)

我在使用后端代码的所有浏览器中完成了它。您只需在前端的新标签页中打开一个新网页即可。让我们说 - www.example.com/path/to/pdf_file。

在此get请求的后端代码中,您需要阅读pdf文件并将内容放在响应正文中。

Content-disposition标头设置为inline;filename=<your pdf filename>这样可确保不会下载响应内容。

如果我知道你正在使用什么后端,我会分享它的后端代码。