За последние 24 часа нас посетили 54000 программистов и 1515 роботов. Сейчас ищут 1140 программистов ...

PHP и печать документов

Тема в разделе "PHP для новичков", создана пользователем ArsNet, 13 дек 2016.

  1. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Подскажите как можно реализовать подсчет страниц средствами РНР при печати документов . Чтобы внизу каждой страницы было написано:
    1 из 3
    2 из 3
    3 из 3
    и такдалее
     
    #1 ArsNet, 13 дек 2016
    Последнее редактирование: 13 дек 2016
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Что значит - печать средствами PHP?
     
  3. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Не печать, а подсчет страниц средствами РНР.
     
  4. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    как связаны между собой печать и php?
    если php формирует документ, который будет распечатан, то в момент формирования php должен знать параметры страницы (размеры) и, исходя их них определять номер страницы, а отображение идет на уровне шаблона.

    Если данная тема помещена в раздел "для профи", это не значит, что нужно выкладывать минимум инфы о задаче. Либо приходите, когда экстрасенсы выйдут из отпуска.
     
  5. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Может быть я чего то не понимаю, но ИМХО можно JS-ом обойтись...
     
  6. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    С JS не особо дружу.
    По инфе и так все понятно. Че выпендриваться?

    Документ ясен пень формируется через php иначе накой он тут вообще.
     
  7. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    Какое выпендриваться?
    Ну так на пхп определяй параметры печатаемой страницы и считай.
     
  8. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    В первом посте ключевое слово КАК!!!???
     
  9. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    for, foreach, while. Можно ещё более изощренным способом через рекурсию)
     
  10. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Хранить в сессии номер текущей страницы и общее кол-во страниц.
     
  11. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    здесь есть лс? пиши в личку
     
  12. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Причем тут циклы?
    А как определить что наступила следующая страница? Как заставить PHP понять что пора то номер странички увеличить

    Я так понял Вы предлагаете вывести на странице определенное количество инфы потом поставить разрыв и увеличить переменные на 1?
     
  13. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    ок. расскажи процесс печати, с самого начала. Как это выглядит в браузере? Отдельная страница это отдельный запрос, или один запрос - это весь документ, который надо распечатать?
    --- Добавлено ---
    Я ничего ещё не предлагаю. Я не вижу как у вас реализован сам процесс печати.
     
  14. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Есть форма в которую вбиваются данные. В зависимости от количество данных выводятся строчки в цикле. Примерно так.
    Код (Text):
    1. $zak1 = $_POST['zak1'];
    2. $zak2 = $_POST['zak2'];
    Потом все выводится в цикле на отдельную страницу:

    Код (Text):
    1. $zak = $zak1
    2.  
    3. while ($zak <= $zak2){
    4. echo $zak;
    5. $zak++;
    6. }

    Так вот. Количество заказов не всегда влазиет на 1 страницу. в таком случае внизу страницы должно быть написано следующее:
    страница 1 из 3
    страница 2 из 3
    страница 3 из 3

    Потом эти страницы отправляем на печать
     
  15. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    так а сделать страницу "версия для печати", а браузер сам добавит пагинацию - не катит? Нажми прям сейчас ctrl+p и внизу страницы есть строчка (страница 1 из 5)
    --- Добавлено ---
    Основная проблема в реализации на "php" здесь в том, что пхп не знает размер печатаемой страницы (А4, А5, А3). Либо делать отдельные шаблоны под эти страницы, либо передавать параметр с количеством строчек на одной странице и на пхп делать разрыв. Но это та ещё работа)
     
  16. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Нажал! Нету такой строчки пользуюсь Chrome. Использование Chrome К сожалению а может и к счастью условие обязательное. Можно поставить верхние и нижние колонтитулы, но тогда появляется ссылка вверху и внизу документа и страницы отображаются как 1/7 к примеру, а в данном случае это категорически не допустимо.
     
  17. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    так в чем тогда проблема? Тут определять размер страницы только вручную
     
  18. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @ArsNet Я думаю, самый верный способ получить получить документ по заданным требованиям, если это действительно важно - генерировать pdf. Тогда вы сможете разместить на колонтитулах что угодно, и это будет распечатано правильно на любом компьютере.
     
  19. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    php не печатает, если работает на сервере и обслуживает сайт. Может быть можно напечатать на принтере, подключённом к тому же компу, на котором работает php (хотя я не решал такой задачи ни разу), но к принтеру пользователя вашего веб-сайта php не имеет никакого отношения. Единственное, что приходит в голову - формировать PDF-файл с нужным разбиением на страницы.
     
  20. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    причем тут рнр печатает или нет? в данном случае рнр+html+mysql генерируют страницу которая отправляется на печать.
     
  21. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    При том, что вы понятия не имеете в случае с php, где кончится одна страница, начнётся другая. Потому что вы не знаете и не можете знать, это просто не передаётся браузером, какие настройки выставит в браузере при печати пользователь (каков будет формат бумаги, поля, колонтитулы и прочее, см. картинку).
    upload_2016-12-14_11-38-14.png
    В том числе, браузер сам печатать может номера страниц, а может не печатать, и т.п. Задача в том виде, в котором вы написали, просто не имеет решения, если это веб-сайт. Так устроен веб, так работают браузеры. Поэтому я и говорю - единственный выход: сгенерировать pdf с нужным форматом страницы, с нужными полями, нужными колонтитулами
     
  22. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Я вообще не понимаю откуда пхп должен знать о какой-то неведомой ему печати? Печать выполняется на компъютере (На стороне клиента), а пых работает на сервере... Как вообще пых связан с печатью? Если я правильно понял что ты хочешь, то тут только js в помощь.
     
  23. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Тоже не поможет, насколько я знаю. В нём только одна функция, связанная с печатью, window.print(), выводит окошко, которое я заскринил
     
  24. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @ArsNet колонтитулы не являются частью web-страницы. Отступы от краев листа и то, что будет напечатано на них (верхний и нижний колонтитул) управляются параметрами печати драйвера принтера.
    Вы должны отдавать клиенту файл в формате, который может содержать информацию о колонтитулах. Веб-страница к таким форматам не относится. Зато есть вариант проще, чем PDF - колонтитулы можно задать в docx-документе http://docs.mirocow.com/doku.php?id=php:docx_doc#колонтитулы
     
  25. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    оффтоп -
    озадачился данной темой и начал гуглить - авось мне повезет

    наткнулся на плагин jquery
    https://github.com/ianoxley/jqueryprintpage#readme

    когда я начал его изучать я чуть не потерял дар речь


    Код (Javascript):
    1. (function(jQuery) {
    2.     jQuery.fn.printPage = function() {
    3.        return this.each(function() {
    4.             // Wrap each element in a <a href="#">...</a> tag
    5.             var $current = jQuery(this);
    6.             $current.wrapInner('<a href="#"></a>');
    7.          
    8.             jQuery('span.print > a').click(function() {
    9.                 window.print();
    10.                 return false;  
    11.             });
    12.        });
    13.     }
    14. })(jQuery);
    на языке крутилось только 1 .. СЕРЬЕЗДНО ?? ради 1 строчки целый плагин ??

    несколько интересных решений .. ссылок

    https://www.sitepoint.com/10-jquery-print-page-options/
     
    #25 Slavka, 14 дек 2016
    Последнее редактирование: 14 дек 2016