How to show PDF in a new tab of IE without downloading it

别来无恙 提交于 2021-01-26 13:16:15

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!