似乎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;
}
}
答案 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>
这样可确保不会下载响应内容。
如果我知道你正在使用什么后端,我会分享它的后端代码。