问题
Seems IE won't allow to open blobs directly. You have to use msSaveOrOpenBlob. But is there any way to convert it somehowe then. I do need to show PDF into a new tab of IE without downloading it or at least user should not interact and don't see it's being downloaded into e.g. system temp folder. Safai opens it in same window instead of a new tab but main problem is IE. The main idea to make all browsers work similar and open it in new tab for preview.
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;
}
}
回答1:
you could use this library: https://github.com/VadimDez/ng2-pdf-viewer. It is build on pdfjs and can integrate a pdf into your own page. You can create a route which takes a link as paramater and open that in a new tab.
回答2:
This simple a
link works on IE11, Edge and Chrome:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<a href="file.pdf" target="_blank">Click</a>
</body>
</html>
It opens the pdf in a new tab without downloading it.
回答3:
try pdfjs
https://mozilla.github.io/pdf.js/
Set up Viewer.php
where you pass the link of the pdf file to show, and simply open it in a new tab, e.g example.com/viewer.php?pdfLink=/files/path/to/doc.pdf
回答4:
<script>
function pdf() {
window.open("filename.pdf","_blank");
}
</script>
<div onclick="pdf();">Click here</div>
Is this what you want? This doesn't uses anchor tag and is supported in all browsers. Click here for more information.
回答5:
You may try this angular package(https://www.npmjs.com/package/ng2-pdfjs-viewer). It has an easy option to open pdf in a new tab. Use the attribute [externalWindow]="true"
.
Code<ng2-pdfjs-viewer [externalWindow]="true" pdfSrc="samplepdf.pdf"></ng2-pdfjs-viewer>
回答6:
I have done it in all browsers using backend code. All you need to do is open a new web page in new tab from front end. let's say - www.example.com/path/to/pdf_file.
In the backend code for this get request, you need to read the pdf file and put the content in response body.
Set the Content-disposition
header to inline;filename=<your pdf filename>
This will ensure the response content should not be downloaded.
I would have shared the backend code to it, if I knew what backend you are using.
来源:https://stackoverflow.com/questions/49267543/how-to-show-pdf-in-a-new-tab-of-ie-without-downloading-it