Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.12.2015, 11:15
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

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 ??
Ответить с цитированием
  #2 (permalink)  
Старый 30.12.2015, 17:04
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

По идее, вам не нужно ничего никуда передавать. 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 родителя
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
POST запрос не отправляется Jmunb AJAX и COMET 1 26.11.2011 16:03
проблемка с объектом, POST запрос Ajax zercs jQuery 1 24.04.2011 19:06
POST запрос воспринимается как OPTIONS neshta AJAX и COMET 0 29.03.2011 23:34
post запрос! ybiza AJAX и COMET 1 11.02.2011 09:41
Yahoo UI асинхронный POST запрос lisan AJAX и COMET 1 12.02.2010 13:57