Вопрос

Я работаю над сайтом-хранилищем информации о профилактике ВИЧ.Многие соавторы будут публиковать статьи через графический интерфейс TinyMCE.

Графические дизайнеры, конечно, хотят контролировать длину страницы.Они хотели бы автоматическую разбивку на страницы в зависимости от объема содержимого на странице.

Кто-нибудь видел AJAX-код для управления этим?

За исключением того, что кто-нибудь видел PHP-код, который может выполнять подсчет символов и просмотр регулярных выражений, чтобы избежать разделения слов или тегов?

Любые ссылки очень ценятся!

Это было полезно?

Решение

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

Хотя это может быстро стать некрасивым, я думаю, лучший способ сделать это - позволить им вручную устанавливать разделители страниц с тегом в статье, который вы можете разобрать.Что-то вроде [pagebreak] довольно просто, и вы получите гораздо более логичные и читаемые разрывы страниц, чем любое автоматизированное решение.

Другие советы

Вам нужно беспокоиться не только о количестве символов, но и о высоте изображений, если на ваших страницах есть изображения или любые другие встроенные объекты, которые могут занимать большую высоту.Количество символов также не даст вам представления о структуре абзаца (один длинный абзац с большим количеством символов, чем страница со многими абзацами, может быть короче).

Если вы готовы использовать JavaScript, это может быть идеальным решением, отправьте всю статью клиенту и позвольте JavaScript обработать разбивку на страницы.С помощью клиента вы можете определять высоту изображения и объекта.Вы могли бы использовать PHP для размещения маркеров там, где, по вашему мнению, должны находиться страницы, а затем использовать JavaScript, чтобы это произошло.Если страницы не очень длинные, я не думаю, что вам нужно будет выполнять несколько XMLHttpRequests (AJAX).

Для простого использования PHP-решение также простое, но, вероятно, не идеальное, поскольку вы не имеете дела с вопросом управления количеством строк.Вы могли бы использовать переменную GET, чтобы определить, где вы находитесь на странице.

Хотя это может быть не тот точный ответ, который вы ищете, но вы действительно должны убедиться, что ваш сайт не имеет фиксированной высоты.Гибкая ширина действительно хороша, но не так критична, как высота.

Особенно для такого дела, как это, и для сайта с большим содержанием контента;справедливо требовать гибкой высоты.

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

Редактировать:удобство использования должно определять дизайн, а не наоборот.Ты делаешь это неправильно ;)

Хорошая разбивка на страницы - непростая задача.Это не простой вопрос кодирования.Научное исследование Пласса (1981) доказало, что оптимальный разрыв страницы, как правило, NP-труден.Вам следует беспокоиться о плавающих цифрах, разрывах строк, различных стилях шрифта и т.д.

И единственное, в чем вам может помочь HTML-движок, - это преобразование страницы в DOM-дерево.А как насчет размеров?Да, у вас могут быть ширина и высота шрифта, поля и отступы, размеры изображений.Но это все.Вся планировка ложится на ваши плечи.И делаю это на javascript...мэх...

Таким образом, единственным возможным решением автоматической разбивки по страницам с фиксированной высотой было бы разбиение на страницы на стороне сервера.PrinceXML на данный момент является лучшим конвертером HTML2PDF.Но это дорого стоит.

Если вы хорошо разбираетесь в разных высотах страниц, вы могли бы воспользоваться предложением epalla.Но это тоже не так просто, как кажется.

Некоторые ссылки для разбивки на страницы:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top