Подтвердить что ты не робот

Как распечатать PDF из IFRAME, если src= pdf?

У меня есть iframe, который должен указывать непосредственно на файл PDF (а не на страницу с PDF файлом):

<iframe id="ecard-pdf" name="ecard-pdf" style="position: absolute;" src="/profile.pdf">
</iframe>

Я хочу, чтобы иметь возможность печатать PDF в этом iFrame

Я нашел несколько решений в других вопросах, которые не соответствуют моим потребностям:

  • Требовать наличия функции в iframe ( qaru.site/info/107111/...)
  • Предложите сфокусировать фрейм и затем выполнить на нем действие печати ( qaru.site/info/116707/...)
  • Доступ к содержимому окна iframe и его печать ( qaru.site/info/116707/...)
  • Вариации этих

Однако кажется, что FireFox и IE не могут этого сделать, если iframe src указывает прямо на PDF, а не на страницу, обернутую вокруг PDF.

Firefox

Вместо печати он отображает это диалоговое окно: "Запретить этой странице создавать дополнительные диалоги" с кнопками "ОК" и "Отмена", ни одна из которых не печатает PDF.

IE

просто игнорирует мои попытки печати с использованием вышеуказанных методов.

Вопрос

Как я могу разрешить пользователям печатать PDF файлы в iFrame независимо от того, какой браузер они используют?

4b9b3361

Ответ 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();"