Подскажите как можно реализовать подсчет страниц средствами РНР при печати документов . Чтобы внизу каждой страницы было написано: 1 из 3 2 из 3 3 из 3 и такдалее
как связаны между собой печать и php? если php формирует документ, который будет распечатан, то в момент формирования php должен знать параметры страницы (размеры) и, исходя их них определять номер страницы, а отображение идет на уровне шаблона. Если данная тема помещена в раздел "для профи", это не значит, что нужно выкладывать минимум инфы о задаче. Либо приходите, когда экстрасенсы выйдут из отпуска.
С JS не особо дружу. По инфе и так все понятно. Че выпендриваться? Документ ясен пень формируется через php иначе накой он тут вообще.
Причем тут циклы? А как определить что наступила следующая страница? Как заставить PHP понять что пора то номер странички увеличить Я так понял Вы предлагаете вывести на странице определенное количество инфы потом поставить разрыв и увеличить переменные на 1?
ок. расскажи процесс печати, с самого начала. Как это выглядит в браузере? Отдельная страница это отдельный запрос, или один запрос - это весь документ, который надо распечатать? --- Добавлено --- Я ничего ещё не предлагаю. Я не вижу как у вас реализован сам процесс печати.
Есть форма в которую вбиваются данные. В зависимости от количество данных выводятся строчки в цикле. Примерно так. Код (Text): $zak1 = $_POST['zak1']; $zak2 = $_POST['zak2']; Потом все выводится в цикле на отдельную страницу: Код (Text): $zak = $zak1 while ($zak <= $zak2){ echo $zak; $zak++; } Так вот. Количество заказов не всегда влазиет на 1 страницу. в таком случае внизу страницы должно быть написано следующее: страница 1 из 3 страница 2 из 3 страница 3 из 3 Потом эти страницы отправляем на печать
так а сделать страницу "версия для печати", а браузер сам добавит пагинацию - не катит? Нажми прям сейчас ctrl+p и внизу страницы есть строчка (страница 1 из 5) --- Добавлено --- Основная проблема в реализации на "php" здесь в том, что пхп не знает размер печатаемой страницы (А4, А5, А3). Либо делать отдельные шаблоны под эти страницы, либо передавать параметр с количеством строчек на одной странице и на пхп делать разрыв. Но это та ещё работа)
Нажал! Нету такой строчки пользуюсь Chrome. Использование Chrome К сожалению а может и к счастью условие обязательное. Можно поставить верхние и нижние колонтитулы, но тогда появляется ссылка вверху и внизу документа и страницы отображаются как 1/7 к примеру, а в данном случае это категорически не допустимо.
@ArsNet Я думаю, самый верный способ получить получить документ по заданным требованиям, если это действительно важно - генерировать pdf. Тогда вы сможете разместить на колонтитулах что угодно, и это будет распечатано правильно на любом компьютере.
php не печатает, если работает на сервере и обслуживает сайт. Может быть можно напечатать на принтере, подключённом к тому же компу, на котором работает php (хотя я не решал такой задачи ни разу), но к принтеру пользователя вашего веб-сайта php не имеет никакого отношения. Единственное, что приходит в голову - формировать PDF-файл с нужным разбиением на страницы.
причем тут рнр печатает или нет? в данном случае рнр+html+mysql генерируют страницу которая отправляется на печать.
При том, что вы понятия не имеете в случае с php, где кончится одна страница, начнётся другая. Потому что вы не знаете и не можете знать, это просто не передаётся браузером, какие настройки выставит в браузере при печати пользователь (каков будет формат бумаги, поля, колонтитулы и прочее, см. картинку). В том числе, браузер сам печатать может номера страниц, а может не печатать, и т.п. Задача в том виде, в котором вы написали, просто не имеет решения, если это веб-сайт. Так устроен веб, так работают браузеры. Поэтому я и говорю - единственный выход: сгенерировать pdf с нужным форматом страницы, с нужными полями, нужными колонтитулами
Я вообще не понимаю откуда пхп должен знать о какой-то неведомой ему печати? Печать выполняется на компъютере (На стороне клиента), а пых работает на сервере... Как вообще пых связан с печатью? Если я правильно понял что ты хочешь, то тут только js в помощь.
Тоже не поможет, насколько я знаю. В нём только одна функция, связанная с печатью, window.print(), выводит окошко, которое я заскринил
@ArsNet колонтитулы не являются частью web-страницы. Отступы от краев листа и то, что будет напечатано на них (верхний и нижний колонтитул) управляются параметрами печати драйвера принтера. Вы должны отдавать клиенту файл в формате, который может содержать информацию о колонтитулах. Веб-страница к таким форматам не относится. Зато есть вариант проще, чем PDF - колонтитулы можно задать в docx-документе http://docs.mirocow.com/doku.php?id=php:docx_doc#колонтитулы
оффтоп - озадачился данной темой и начал гуглить - авось мне повезет наткнулся на плагин jquery https://github.com/ianoxley/jqueryprintpage#readme когда я начал его изучать я чуть не потерял дар речь Код (Javascript): (function(jQuery) { jQuery.fn.printPage = function() { return this.each(function() { // Wrap each element in a <a href="#">...</a> tag var $current = jQuery(this); $current.wrapInner('<a href="#"></a>'); jQuery('span.print > a').click(function() { window.print(); return false; }); }); } })(jQuery); на языке крутилось только 1 .. СЕРЬЕЗДНО ?? ради 1 строчки целый плагин ?? несколько интересных решений .. ссылок https://www.sitepoint.com/10-jquery-print-page-options/