Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Форматирование страницы


Автор: rsm 4.4.2007, 01:43
Есть некоторый шаблон, выглядящий примерно так:
Код

СОГЛАСОВАНО:     УТВЕРЖДАЮ:
Завхоз     Директор
___________     ___________
Камноедов М.М.     Невструев Я.П.

АКТ

на списание джиннов за _______ 200 _ г.
ФИО исполнителя __________

/* тут идет таблица */

№    Имя джинна    Возраст

1   Билли-ибн-Гейтс   1500

...

/* конец таблицы */

Кладовщик: __________

Требуется: вывести данный текст не более чем на один лист А4. Если таблица получается длинная, допускается продолжить ее на оборотной стороне листа, но только по целым строкам (без деления строки на части по горизонтали).

Условия: можно использовать только стандартные функции и классы PHP 5, никакие дополнения типа модулей работы с MS Excel и т.п. не допускаются.

Собственно вопрос: как это реализовать? Насколько мне известно, HTML-страница по определению не подлежит такому жесткому форматированию и печатается как получится, а не как нужно.

Автор: mishaSL 4.4.2007, 08:06
rsm, как выглядит страница на печати не зависит от PHP. Это возможно реализовать с помощью HTML+CSS.
В CSS есть специальные свойства, которые отвечают за отображение при выводе на устройства с постраничной разбивкой.
Рекомендую прочитать эту главу http://www.w3.org/TR/CSS21/page.html
Русскую версию вы можете скачать http://forum.vingrad.ru/index.php?showtopic=135997&view=findpost&p=1034072

Автор: rsm 4.4.2007, 11:10
Цитата(mishaSL @  4.4.2007,  10:06 Найти цитируемый пост)
специальные свойства, которые отвечают за отображение при выводе на устройства с постраничной разбивкой

Доки по ссылкам почитал, спасибо. Однако вопросы остались, потому что:
1)
Цитата
13.2.1.1 Rendering page boxes that do not fit a target sheet
If a page box does not fit the target sheet dimensions, the user agent may choose to:
* Rotate the page box 90° if this will make the page box fit.
* Scale the page to fit the target
В моем случае содержимое страницы нельзя ни переворачивать, ни уменьшать в масштабе.

2) 
Цитата
13.3.5 "Best" page breaks
<skip>
* Avoid breaking inside a table
Т.е. по спецификации разрывы внутри таблиц не рекомендуются. А нарушение спецификации вызвает проблемы совместимости с браузерами.

Главный вопрос - как определить место разрыва? В указанных доках про разрывы таблиц нет ничего (есть только принудительный поворот когда места не хватает, это мне не подходит). Знай я место разрыва - обошелся бы вообще без CSS, просто разделив таблицу, это было бы даже лучше, потому что можно было бы добавить заголовки колонок, сделав разорванную таблицу более удобной для чтения.

Нашел http://forum.vingrad.ru/topic-142940/anchor-entry1080324/0.html, но и в ней задачу до конца так и не решили. Зато обнаружили упомянутую выше проблему совместимости с браузерами: IE строки рвет, FF не рвет, плюс в обоих браузерах не работает альбомная ориентация страницы.

Автор: mishaSL 4.4.2007, 11:37
Цитата(rsm @  4.4.2007,  11:10 Найти цитируемый пост)
Знай я место разрыва - обошелся бы вообще без CSS

Это да, только определить его проблематично. Но можно с помощью CSS определить где можно разрывать страницу и как это делать, а где нет. http://www.w3.org/TR/CSS21/page.html#page-breaks

Цитата(rsm @  4.4.2007,  11:10 Найти цитируемый пост)
потому что можно было бы добавить заголовки колонок, сделав разорванную таблицу более удобной для чтения.

http://forum.vingrad.ru/topic-137032/kw-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0-html/hl/thead/index.html

Добавлено через 1 минуту и 6 секунд
Цитата(rsm @  4.4.2007,  11:10 Найти цитируемый пост)
Доки по ссылкам почитал

Лучше в русском изложении почитать smile 

Автор: rsm 4.4.2007, 16:54
Хм, FF строки рвет нормально, IE конечно глючит (иного от него ожидать не приходится). Ну да и Гейтс с ним, поставлю заказчику FF, пусть юзает.

Автор: mishaSL 4.4.2007, 17:44
Цитата(rsm @  4.4.2007,  16:54 Найти цитируемый пост)
Ну да и Гейтс с ним, поставлю заказчику FF

 smile  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)