Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как разделять страницы при выводе отчета (https://javascript.ru/forum/events/2285-kak-razdelyat-stranicy-pri-vyvode-otcheta.html)

ilshat 02.12.2008 04:51

Как разделять страницы при выводе отчета
 
Доброго времени суток.

Не подскажите метод решения постраничного вывода отчета на печать.

Проблема в том что отчет - страниц этак на 6, выводится сплошным потоком. И получает что строка начинается на одной странице, а заканчивается на другой. Образуется разрыв, которого не должно быть.

Может быть есть алгоритмы или готовые решения как лимитировать количество строк выводимых на страницу чтобы они не выходили за границу страницы. При этом заранее нельзя спрогнозировать сколько строк будет на конкретной странице, так как текст находящийся в одной строке может быть слишком большим и получится что в строке таблицы находятся две строки текста. То есть тут как минимум необходимо вычислять координаты нижнего бордюра каждой строки чтобы выставлять флаг - делать разрыв или нет.

Zibba 02.12.2008 08:14

Думаю Вам поможет:
http://habrahabr.ru/blogs/css/38307/
http://habrahabr.ru/blogs/css/43487/

ilshat 02.12.2008 10:50

спасибо конечно.
но большинство этого великолепия в IE 6.0 не поддерживается.
Поэтому разрывать строчки в таблице не получится и нужно будет для каждой страницы формировать новую таблицу.
А чтобы знать когда в поток документа вставлять
/table
table
нужно каким то образом вычислять высоту очередной сформированной страницы, чтобы не выходить за рамки листа. Вот над этим я и бьюсь.

format1981 09.12.2009 22:48

Похожая ситуация и у меня. Только на страницу выводятся чертежи (их несколько), сделанные из div'ов , у каждого position: absolute;, то есть они никак не влияют на положение всех остальных элементов страницы, а располагается именно там где нужно (по атрибутам left и top). Мне нужно чтобы чертежи, при печати не разбивались на половинки, а выводились целиком, например по два на страницу.

Я пробовал вставлять <br style="page-break-after: always"> в месте требуемого разрыва страницы, но ничего не помогло. Грешу на position: absolute. Может быть кто сталкивался с такой проблемой?

B~Vladi 09.12.2009 23:49

При выводе на печать, страница часто ведёт себя не предсказуемо. Первое, что нужно сделать - установить для HTML и BODY стиль width:800px;

Если нужно выводить элемент больше этого - ставим width:100% (ну или меньше), чтобы уместить на одном листе. Все лишние элементы убирайте. Используйте отдельный файл стилей для печати, либо генерируйте отдельную страницу - сэкономите кучу нервов:)

format1981 09.12.2009 23:55

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

subzey 10.12.2009 01:13

Цитата:

Сообщение от B~Vladi (Сообщение 37573)
установить для HTML и BODY стиль width:800px

:-E

На 96 dpi (макось) это будет 211,5 мм, на 72 dpi (винды) — 282 мм. Учитывая, что ширина А4 210 мм, и то и другое значение несколько странно. B~Vladi, разъясните, пожалуйста.

Мой совет как (быдло-)верстака: хотите сделать документ для печати, сделайте pdf.

B~Vladi 10.12.2009 10:24

Цитата:

Сообщение от subzey
На 96 dpi (макось) это будет 211,5 мм, на 72 dpi (винды) — 282 мм. Учитывая, что ширина А4 210 мм, и то и другое значение несколько странно. B~Vladi, разъясните, пожалуйста.

Чё разьяснять?! Практика показывает...


Часовой пояс GMT +3, время: 05:54.