Как распечатать PDF из IFRAME, если src= pdf?
У меня есть iframe, который должен указывать непосредственно на файл PDF (а не на страницу с PDF файлом):
<iframe id="ecard-pdf" name="ecard-pdf" style="position: absolute;" src="/profile.pdf">
</iframe>
Я хочу, чтобы иметь возможность печатать PDF в этом iFrame
Я нашел несколько решений в других вопросах, которые не соответствуют моим потребностям:
Однако кажется, что FireFox и IE не могут этого сделать, если iframe src указывает прямо на PDF, а не на страницу, обернутую вокруг PDF.
Firefox
Вместо печати он отображает это диалоговое окно: "Запретить этой странице создавать дополнительные диалоги" с кнопками "ОК" и "Отмена", ни одна из которых не печатает PDF.
IE
просто игнорирует мои попытки печати с использованием вышеуказанных методов.
Вопрос
Как я могу разрешить пользователям печатать PDF файлы в iFrame независимо от того, какой браузер они используют?
Ответы
Ответ 1
Я немного потрудился найти решение, которое работает как для IE, так и для Chrome. Это работает для меня:
$(function() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
var trident = ua.indexOf('Trident/');
var edge = ua.indexOf('Edge/');
var url = '/url/to/file.pdf';
var pdf ='';
var style = 'position:fixed; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden;';
if(msie > 0 || trident > 0 || edge > 0){
pdf = '<object data="' + url + '" name="print_frame" id="print_frame" style="' + style + '" type="application/pdf">';
}
else{
pdf ='<iframe src="' + url + '" name="print_frame" id="print_frame" style="' + style + '"></iframe>';
}
$(document.body).append(pdf);
setTimeout(function(){
window.frames["print_frame"].focus();
window.frames["print_frame"].print();
},2000);
});
... веселит.
Ответ 2
Как предлагается в этом ответе на похожий вопрос, вы можете сделать это:
window.frames.pdfFrame.print();
Это должно решить вашу проблему.
Ответ 3
Вариант 1:
Я не тестировал это, но нашел здесь еще один ответ: fooobar.com/questions/289620/...
Предполагая, что вы можете использовать следующее:
<style type="text/css" media="print">
body *{display:none}
iframe{display:block}
</style>
Итак, отображается только pdf?
Вариант 2:
Сделайте гиперссылку на файл pdf, в котором говорится "Печать меня"
<a href='Path/To/PDF'>Print Me</a>
Надеюсь, что это поможет...
-Эндрю
Ответ 4
Кажется, что это работает:
<style type="text/css" media="print">
body *{display:none}
iframe{display:block}
</style>
Итак, отображается только pdf?
Ответ 5
Вы можете использовать опцию печати непосредственно окна.
используйте опцию onclick
OnClick = "JavaScript: window.print();"