POST запрос вывод на печать
Всем привет!
Есть страница с кнопкой на печать... При нажатии открывается подготовленная страница для печати с колонтитулами. Я хочу чтобы их не было. Как вариант придумал перед выводом на печать генерировать страницу в pdf и ее уже выводить на печать, тогда колонтитулы верхние и нижние пропадают... Получаем красивую страницу для печати... Страница начальная:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>jQuery Print Plugin</title>
<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="jquery.printPage.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$(".btnPrint").printPage();
});
</script>
</head>
<body>
<h3>Пример:</h3>
<div id="main_tab">тут таблица с данными...</div>
<p>При нажатии на кнопку, будет подгружен iframe и напечатан!</p>
<p><a class="btnPrint" href='iframes/iframe.php'>Печатать!</a></p>
</body>
</html>
Ссылка на скрипт jquery.printPage.js iframe.php работает с mpdf60 для генерации pdf документа. Тут все работает. Если кратко, то в документе формируется html который конвертируется в pdf формат. Я хочу не использовать в этом документе кучу sql запросов для генерации новой таблицы с данными, А взять ее из <div id="main_tab">. Думаю что наверное правильный способ это передать ее через POST запрос. Вот так я вывожу страницу на печать... Это без генерации pdf. Мне нравится как работает скрипт jquery.printPage.js. Вывод на печать осуществляется красиво, и наверное самое главное что использует iframe для генерации pdf формата...
$("#print_tab").click(function() {
var new_wnd = window.open(location.href+"?tmpl=component&print=1&layout=default&page=", "subWindow", "status,menubar,height=500,width=500,scrollbars=yes");
var new_content = '<html><head><title>Мой сайт</title><meta http-equiv="content-type" content="text/html; charset=utf-8" />';
css_path = "<?php echo JURI::base().'css/style_print.css'; ?>"
new_content += '<script type="text\/javascript">function ImportStyleFile () {'
new_content += 'var linkTag = document.createElement ("link");'
new_content += 'linkTag.href = "'+ css_path +'";'
new_content += 'linkTag.rel = "stylesheet";'
new_content += 'var head = document.getElementsByTagName ("head")[0];'
new_content += 'head.appendChild (linkTag);'
new_content += '}<\/script>';
new_content += '</head><body onload="ImportStyleFile()">';
new_content += '<img src="<?php echo JURI::base().'img/spec.png'.'?random='.rand()*1000000; ?>" class="leftimg">';
new_content += $("#main_tab").html();
new_content += '</body><html>';
new_wnd.document.write(new_content);
new_wnd.document.close();
new_wnd.focus();
setTimeout(function() {
new_wnd.print();
new_wnd.close();
}, 100);
});
Подскажите пожалуйста, как можно переменную new_content передать POST запросом при выполнении jquery.printPage ?? |
По идее, вам не нужно ничего никуда передавать. jquery.printPage.js грузит указанный в href файл в iframe, откуда можно спокойно достать данные из родительского окна
Вот простенький пример, иллюстрирующий эту мысль: Начальная страница
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>jQuery Print Plugin</title>
<script src="scripts/jquery-1.11.3.min.js" type="text/javascript"></script>
<script src="scripts/jquery.printPage.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".btnPrint").printPage();
});
</script>
</head>
<body>
<div id="main_tab">тут таблица с данными...</div>
<h3>Пример:</h3>
<p>При нажатии на кнопку, будет подгружен iframe и напечатан!</p>
<p><a class="btnPrint" href='blank.html'>Печатать!</a></p>
</body>
</html>
Загружаемая страница blank.html
!DOCTYPE html>
<html>
<head>
<script src="scripts/jquery-1.11.3.min.js" type="text/javascript"></script>
<script>
function init() {
$("body").html($('#main_tab', window.parent.document).html()) ;
}
</script>
</head>
<body id= "body" onload="init()">
</body>
</html>
Соответственно, ваш скрипт по формированию новой страницы (но без создания нового окна - новым окном будет iframe) надо вставить в iframe.php и вытягивать данные из main_tab родителя |
| Часовой пояс GMT +3, время: 22:36. |