В целом это удивительно сложная проблема, с которой у вас не будет проблем, если вы попытаетесь сделать это на сервере. Проблема с разбиением на страницы HTML-текста заключается в том, что разрывы страниц полностью зависят от клиента. Сервер не знает разрешения экрана клиента, выбора шрифта или размера окна, и кроме самого текста они являются зависимыми переменными для проблемы.
Я был бы удивлен, если бы на данный момент не было какой-либо библиотеки jQuery, которая просто делает это, но когда мне пришлось реализовать ее самостоятельно около 7 лет назад, вот такой подход я выбрал:
Создать div
для каждого столбца. Каждый из них содержит весь текст документа. Стиль div
s с фиксированной высотой строки. Поместите нижний столбец div
в z-порядке документа. Теперь вы можете разметить оставшуюся часть страницы, оставив в макете дыры известного размера, через которые могут показываться div
s, и манипулируя вертикальным положением каждого div
, вы можете контролировать, какая строка появляется первой внутри данной дыры.
Затем вы можете позволить клиенту манипулировать размером шрифта, и пока вы пересчитываете высоту отверстий и затем правильно перемещаете div
, все будет работать волшебным образом.
В HTML5 могут быть способы сделать это проще; Я бы определенно посмотрел на это.