Печать содержимого другой страницы

В следующей ссылке

<a href=\"#\" onclick=javascript:print(\"\") style=\"color:blue;\">Print</a>"
<script>
 function print()
 {
      //How to print the contents of another page
 }

person Hulk    schedule 05.04.2010    source источник


Ответы (6)


Я думаю, вы можете распечатать содержимое текущей страницы, а не внешней страницы.

person Sarfraz    schedule 05.04.2010
comment
Мы также можем распечатать содержимое другой страницы, используя URL-адрес с iframe. Проверьте эту ссылку stackoverflow. - person Shivakrishna; 27.03.2018
comment
Мы можем распечатать содержимое другой страницы, пожалуйста, проверьте ссылку stackoverflow – (stackoverflow.com/a/51306322/4225796) - person Rupesh Agrawal; 12.07.2018

Я знаю, что это старый вопрос, но вы можете сделать это так:

function printExternal(url) {
    var printWindow = window.open( url, 'Print', 'left=200, top=200, width=950, height=500, toolbar=0, resizable=0');
    printWindow.addEventListener('load', function(){
        printWindow.print();
        printWindow.close();
    }, true);
}

Проверено в Firefox и Chrome. IE9 не работает.


Редактировать 2020-04-03

Больше не работает в Chrome, код адаптирован из Coder answer здесь:

function printExternal(url) {
    var printWindow = window.open( url, 'Print', 'left=200, top=200, width=950, height=500, toolbar=0, resizable=0');

    printWindow.addEventListener('load', function() {
        if (Boolean(printWindow.chrome)) {
            printWindow.print();
            setTimeout(function(){
                printWindow.close();
            }, 500);
        } else {
            printWindow.print();
            printWindow.close();
        }
    }, true);
}
person Alejandro Fiore    schedule 05.01.2013
comment
Я бы сказал вам большое спасибо. Этот трюк работает для меня. Это действительно помогает для режима киоска в Chrome. - person Aldry Wijaya; 27.07.2013
comment
Этот метод работает, но перенаправляет мою главную страницу на страницу индекса. - person iamsmug; 20.05.2014
comment
В Chrome 55.0.2883.59 он порождает окно, не печатает, а затем закрывает. - person TheRealJAG; 01.12.2016
comment
Работал для меня, спасибо. - person Miri; 09.01.2021

Если у вас уже есть внешняя страница ( letterprint.php ), поместите эту страницу в скрытый iframe и распечатайте содержимое iframe, используя атрибут onclick в кнопке.

<iframe src="letterprint.php" style="display:none;" name="frame"></iframe>

<input type="button" onclick="frames['frame'].print()" value="printletter">
person 151291    schedule 26.06.2015
comment
Это сработало и для меня, но мне пришлось сделать какой-то трюк в iframe, потому что, если я установил display:none, он не печатается. Поэтому я установил стиль iframe, например, style=visibility:hidden; высота: 1 пиксель; ширина: 1px. - person rolo1091; 09.04.2018
comment
Это работало фантастически в текущих браузерах, самый красноречивый способ сделать это без создания всплывающего окна (это был метод, который я использовал) - нужно больше голосов. - person Tarquin; 16.01.2019

Альтернативой является ссылка на страницу с помощью переменной get, а затем вызов функции печати.

По вашей ссылке -

<a href="print-page.php?print=1">Print other page</a>

Затем на странице печати (или на всех страницах)

<script type="text/javascript">
<? if(isset($_GET['print'])) { ?>
window.print();
<? } ?>
</script>
person sebtucknott    schedule 06.06.2014
comment
Хотя ваш ответ выглядит как хорошее возможное решение, лучше не отвечать в темах, которые не были активны в течение нескольких лет. - person ndsmyter; 06.06.2014
comment
Почему бы нет? Искал решение, нашел эту тему. Я разработал свое собственное решение и надеюсь, что это поможет кому-то еще... - person sebtucknott; 14.06.2015
comment
Да, сейчас 2017 год, и Google привел меня сюда. Это был точный ответ, который я искал. - person Jay; 18.07.2017
comment
О верно. Это PHP. Заняло секунду. Если вы хотите остаться в простом javascript, вы можете сделать что-то вроде этого: if (/\bprint=1\b/.test(window.location.search)) window.print(); - person Arel; 23.11.2018

Вы можете распечатать внешнюю страницу, создав объект окна другой страницы и вызвав метод печати этой страницы.
URL-адрес может быть передан в качестве аргумента или может быть жестко запрограммирован в функции в зависимости от варианта использования.

function print(url) {
    var printWindow = window.open( url);
    printWindow.print();
};
person Rupesh Agrawal    schedule 12.07.2018

Подумайте о проблемах безопасности/неловкости, которые существовали бы, если бы это было возможно. К счастью, браузеры не позволят вам сделать это.

Самое близкое, что вы можете получить, это получить страницу через AJAX, заменить текущую DOM новой страницей и распечатать с помощью обычного метода JS print().

person Amy B    schedule 05.04.2010
comment
не простой способ, о котором вы говорите, по крайней мере, для новичка, кстати, в чем проблема безопасности? - person ; 05.04.2010
comment
@phpBOY - Проблема в том, что незрелые владельцы веб-сайтов печатают порносайты, когда вы этого не ожидаете. - person Amy B; 05.04.2010