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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
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

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
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

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
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

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
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.061 секунд. Запросов: 24.