Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: php, расчет высоты страницы  (Прочитано 3698 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
php, расчет высоты страницы
« : 22 Марта 2010, 16:54:45 »
нужно формировать таблицу, и чтобы при распечатке, строка таблицы не разъезжалась на два листа, а переносить эту строку на другой лист.
т.е. нужно считать высоту страницы по мере заполнения, и при достижении определенного максимума вставлять пустую строку

как такое сделать?
у меня можно спросить=)

Оффлайн easy2002

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2786
  • Мурманск
    • Просмотр профиля
Re: php, расчет высоты страницы
« Ответ #1 : 22 Марта 2010, 17:06:51 »
если использовать <thead>, заголовок таблицы будет печататься на каждой странице и строки разъезжаться не будут.
или я не так понял?
« Последнее редактирование: 22 Марта 2010, 17:25:40 от easy2002 »
Tempora mutantur et nos mutantur in illis

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: php, расчет высоты страницы
« Ответ #2 : 22 Марта 2010, 17:18:18 »
Я сохраняю страницу как html и в ООо, предварительно просматривая, подгоняю под тот вид который нужно.
Чистый расчет в php не получится, т.к. при использовании jquery (ajax) и css может сваяться нечто, неподдающееся расчету, мсм. 8)

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: php, расчет высоты страницы
« Ответ #3 : 22 Марта 2010, 19:14:35 »
если использовать <thead>, заголовок таблицы будет печататься на каждой странице и строки разъезжаться не будут.
или я не так понял?
допустим я динамически создал страницу с 50 строками, при печати на один лист это не поместится, а при разрыве на два листа, разорвется строка, и получится что одна строка таблицы будет в конце первого листа, и в начале второго, что очень неудобно, хотелось бы чтобы этого разрыва не было,
поэтому в место этого разрыва вставлять пустую строку, а вот как расчитать место этого разрыва..

Я сохраняю страницу как html и в ООо, предварительно просматривая, подгоняю под тот вид который нужно.
Чистый расчет в php не получится, т.к. при использовании jquery (ajax) и css может сваяться нечто, неподдающееся расчету, мсм. 8)

если брать в расчет только то, что выводится будет массив текста в таблице, по идеи количество строк на листе при определенном размере шрифта можно посчитать, и считать количество строк, но как это посчитать в таблице..
у меня можно спросить=)

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: php, расчет высоты страницы
« Ответ #4 : 22 Марта 2010, 20:28:29 »
Скорее всего ты собраслся узнать высоту печатаемой страницы. В том числе тебе нужно будет еще узнать формат (А3, А4, А5 и т.п.), ориентацию, размеры отступов и прочее (и это только по умолчанию, а что пользователь перед распечаткой наворочает будет покрыто мраком). Или у всех принтеров все одинаково?

Насколько я знаю, просто HTML, JavaScript и PHP тебе не помогут и нужно будет еще установить свое приложение на клиента.

Update
Решив задачу с принтером, думаю будет несложно посчитать высоту записей в таблице.
« Последнее редактирование: 22 Марта 2010, 20:34:16 от unimix »

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: php, расчет высоты страницы
« Ответ #5 : 22 Марта 2010, 20:51:14 »
проблем с принтером никаких, он один (правда печататать на нем будут этот документ с нескольких машин ) но вроде бы, если сделать настроки, то патом не придется менять. поправте если не прав я

Цитировать
Решив задачу с принтером, думаю будет несложно посчитать высоту записей в таблице.
намекните как =)
с учотом того, что в таблице, в ячейке может быть не одна строка текста, а может быть одна
у меня можно спросить=)

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: php, расчет высоты страницы
« Ответ #6 : 22 Марта 2010, 20:52:32 »
Самый простой способ (по моему):

Надо знать шрифт, т.е. ширину и высоту всех нужных символов; ширину и отступы ячейки. С помощью ширины символов можно узнать ширину слов. Далее необходимо посчитать переносы как автоматические так и "br" (расположить текст нужно в допустимую ширину текста, которая равна ширина ячейки минус внутренние отсупы). Зная высоту одной строки можно узнать высоту текста (умножая высоту строк на их количество). Зная высоту текста можно получить высоту ячейки записи таблицы.

Update
А можно сделать вывод в PDF используя функции PHP (http://ru.php.net/manual/en/ref.pdf.php) или сторонние библиотеки.
« Последнее редактирование: 22 Марта 2010, 21:02:20 от unimix »

gengzu

  • Гость
Re: php, расчет высоты страницы
« Ответ #7 : 22 Марта 2010, 23:47:53 »
шрифт на сервере все равно вы не узнаете. а так же его размер. а масштабирование? а просто увеличение шрифта?

Оффлайн RandomNT

  • Любитель
  • *
  • Сообщений: 80
    • Просмотр профиля
Re: php, расчет высоты страницы
« Ответ #8 : 23 Марта 2010, 00:28:04 »
Самый простой способ (по моему):

Надо знать шрифт, т.е. ширину и высоту всех нужных символов; ширину и отступы ячейки. С помощью ширины символов можно узнать ширину слов. Далее необходимо посчитать переносы как автоматические так и "br" (расположить текст нужно в допустимую ширину текста, которая равна ширина ячейки минус внутренние отсупы). Зная высоту одной строки можно узнать высоту текста (умножая высоту строк на их количество). Зная высоту текста можно получить высоту ячейки записи таблицы.
+1

И можно попробовать упростить. Например задать что на страницу влезает 40 строк, и если в выводимой строке больше 80 символов, считать её за две строки. Када насчитали 40 строк вставляем разрыв страницы.

Пользователь решил продолжить мысль 23 Марта 2010, 00:35:04:
Разделение страниц я делал - вставлял в нужном месте теги <hr />, а в css прописывал стиль чтоб при печати они заменялись на "разрыв страницы"
@media print {
  hr {
    PAGE-BREAK-AFTER: always;
    visibility: hidden;
  }
}
« Последнее редактирование: 23 Марта 2010, 00:35:04 от RandomNT »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: php, расчет высоты страницы
« Ответ #9 : 23 Марта 2010, 08:04:43 »
В таблицу могут вставляться записи на 1, 2, 3 строки, например, из БД или бог его знает откуда.
Количество записей в таблице неопределенно. Например, электронный расчет стоимости заказа.
И т.д. и т.п.
Требуется обязательный предварительный просмотр глазами и ручная подгонка.
Если Вас не устраивает подгонка в ООо, делайте подгонку в html. Например, можно сделать формочку для печати из первичной формы, но с некоторыми фичами для подгонки печати.

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: php, расчет высоты страницы
« Ответ #10 : 23 Марта 2010, 15:09:52 »
В таблицу могут вставляться записи на 1, 2, 3 строки, например, из БД или бог его знает откуда.
Количество записей в таблице неопределенно. Например, электронный расчет стоимости заказа.
И т.д. и т.п.
Требуется обязательный предварительный просмотр глазами и ручная подгонка.
Если Вас не устраивает подгонка в ООо, делайте подгонку в html. Например, можно сделать формочку для печати из первичной формы, но с некоторыми фичами для подгонки печати.
неустраиват вообще ручная подгонка в любой ее форме
Самый простой способ (по моему):

Надо знать шрифт, т.е. ширину и высоту всех нужных символов; ширину и отступы ячейки. С помощью ширины символов можно узнать ширину слов. Далее необходимо посчитать переносы как автоматические так и "br" (расположить текст нужно в допустимую ширину текста, которая равна ширина ячейки минус внутренние отсупы). Зная высоту одной строки можно узнать высоту текста (умножая высоту строк на их количество). Зная высоту текста можно получить высоту ячейки записи таблицы.
+1

И можно попробовать упростить. Например задать что на страницу влезает 40 строк, и если в выводимой строке больше 80 символов, считать её за две строки. Када насчитали 40 строк вставляем разрыв страницы.
Цитировать

Пользователь решил продолжить мысль 22 Марта 2010, 22:35:04:
Разделение страниц я делал - вставлял в нужном месте теги <hr />, а в css прописывал стиль чтоб при печати они заменялись на "разрыв страницы"
@media print {
  hr {
    PAGE-BREAK-AFTER: always;
    visibility: hidden;
  }
}
в каждой из строк таблицы может быть разно количество строк текста, как это уловить непойму

Цитировать
Update
А можно сделать вывод в PDF используя функции PHP (http://ru.php.net/manual/en/ref.pdf.php) или сторонние библиотеки.
рассматриваю как один из вариантов, а также в rtf, odt - пока темный лес =))
у меня можно спросить=)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: php, расчет высоты страницы
« Ответ #11 : 23 Марта 2010, 15:36:43 »
Запомните в браузере как html. ООо прекрасно откроет html.
Скажу больше. HTML можно готовить в OOo. Потом, конечно, желательно подрихтовать.
Но это уже совсем другая история (ц). 

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: php, расчет высоты страницы
« Ответ #12 : 23 Марта 2010, 15:49:03 »
Запомните в браузере как html. ООо прекрасно откроет html.
Скажу больше. HTML можно готовить в OOo. Потом, конечно, желательно подрихтовать.
Но это уже совсем другая история (ц). 

объяснять каждому пользователю, что для распечатки таблицы нужно сначала сохранить страницу, открыть ее в ооо и только патом распечатать?
давычто=)))

цель одна, предоставить пользователю документ готовый к печати, пусть при обращении к нему он открывается и вдругих программах, (Ooo, pdf reader) но автоматически!
но всеже хочется не городить огород с формированием файлов pdf | ooo ,  а добавлять разрыв страницы
у меня можно спросить=)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: php, расчет высоты страницы
« Ответ #13 : 23 Марта 2010, 16:00:52 »
Стремление понятное.
Есть еще одна неприятная особенность. Размеры страницы (размеры печати на странице) могут быть изменены пользователем. Это его право.
Поэтому предварительный просмотр перед печатью и возможность слегка подредактировать страницу обязательны.
« Последнее редактирование: 23 Марта 2010, 16:08:20 от alexander.pronin »

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: php, расчет высоты страницы
« Ответ #14 : 23 Марта 2010, 16:20:42 »
Стремление понятное.
Есть еще одна неприятная особенность. Размеры страницы (размеры печати на странице) могут быть изменены пользователем. Это его право.
Поэтому предварительный просмотр перед печатью и возможность слегка подредактировать страницу обязательны.
да, для этого пока придумал одно - открывать этот документ в уже настроенном Осле, сделав отдельную ссылку у них (на раб столе, на панели итд итп) все равно они все пользуются мозилами/операми
костыльно конечно
у меня можно спросить=)

 

Страница сгенерирована за 0.054 секунд. Запросов: 25.