Хорошая разбивка текста на PHP - PullRequest
3 голосов
/ 29 апреля 2009

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

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 30 апреля 2009

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

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

1 голос
/ 11 декабря 2010

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

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

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

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

Некоторые ссылки на нумерацию страниц:

1 голос
/ 29 апреля 2009

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

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

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

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

1 голос
/ 29 апреля 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...