it-roy-ru.com

Как показать PDF в новой вкладке IE без загрузки

Кажется, IE не разрешит открывать капли напрямую. Вы должны использовать msSaveOrOpenBlob. Но есть ли способ преобразовать это как-нибудь тогда? Мне нужно показать PDF на новой вкладке 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;
    }
}
4
John Glabb

вы можете использовать эту библиотеку: https://github.com/VadimDez/ng2-pdf-viewer . Она основана на pdfjs и может интегрировать PDF в вашу собственную страницу. Вы можете создать маршрут, который принимает ссылку как параметр и открыть ее в новой вкладке.

3
Robin Dijkhof

Эта простая ссылка a работает на IE11, Edge и Chrome:

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

Он открывает PDF в новой вкладке, не загружая его.

2
Dhruv Murarka

попробуйте pdfjshttps://mozilla.github.io/pdf.js/

Настройте Viewer.php, где вы передаете ссылку файла PDF, чтобы показать, и просто откройте ее в новой вкладке, например, example.com/viewer.php?pdfLink=/files/path/to/doc.pdf

1
line88

Я сделал это во всех браузерах, используя код на сервере. Все, что вам нужно сделать, это открыть новую веб-страницу в новой вкладке из внешнего интерфейса. скажем - www.example.com/path/to/pdf_file.

В бэкэнд-коде для этого запроса get вам нужно прочитать файл pdf и поместить содержимое в тело ответа.

Задайте для заголовка Content-disposition значение inline;filename=<your pdf filename>. Это позволит избежать загрузки содержимого ответа.

Я бы поделился с ним кодом бэкэнда, если бы знал, какой бэкэнд вы используете.

0
user1741851
<script>
function pdf() {
window.open("filename.pdf","_blank");
}
</script>
<div onclick="pdf();">Click here</div>

Это то, что вы хотите? Это не использует тег привязки и поддерживается во всех браузерах. Для получения дополнительной информации нажмите здесь.

0
user9539919