Как вывести текст как в книге?

AlExTeam
На сайте с 12.08.2010
Offline
34
956

Нужно сделать вывод страниц книги для чтения в онлайне.

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

Ситуэйшен вроде бы проста:

нужно вывести в диве 30 строк, словить и скрыть 31-ю и на новой странице чтобы первая строчка была той, которая была 31-й на предыдущей.:confused:

Internet killed the video star
AlExTeam
На сайте с 12.08.2010
Offline
34
#1

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

gormarket
На сайте с 29.12.2010
Offline
47
#2

Читайте файл в массив

$arrStr=file(filename);

количество строк

$n_str=sizeof($arrStr);

и выводите на каждой странице нужное количество строк

например если выводить по $n_ofstr строк и страница $n (от 1), то так:

$n_last=($n*$n_ofstr)>$n_str?$n_str двоеточие ($n*$n_ofstr);

for ($i=($n-1)*$n_ofstr;$i<$n_last;$i++){

print $arrStr[$i].'<br />';

}

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
AlExTeam
На сайте с 12.08.2010
Offline
34
#3

строки-то разные и они иногда перетекают и получается из одной - две.

Плюс - шрифты в системах бывают разные, соотв. по ширине символов тоже не получится. Надо как-то "на лету".

Joker-jar
На сайте с 26.08.2010
Offline
171
#4

размер_файла_в_байтах / кол-во_символов_на_страницу = кол-во_страниц (для пагинации)

Для формирования страницы:

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

(используем $offset и $maxlen). $offset = (номер_страницы - 1) * кол-во_символов_на_страницу. $maxlen = кол-во_символов_на_страницу.

Это самое простое. Плюс я бы сделал нормальное обрезание, чтобы полслова в начале и конце не было.

P.S. Еще можно не лениться, а засунуть книгу в базу постранично статьями, красиво разбив.

AlExTeam
На сайте с 12.08.2010
Offline
34
#5
Joker-jar:
размер_файла_в_байтах / кол-во_символов_на_страницу = кол-во_страниц (для пагинации)

Для формирования страницы:

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )


(используем $offset и $maxlen). $offset = (номер_страницы - 1) * кол-во_символов_на_страницу. $maxlen = кол-во_символов_на_страницу.

Это самое простое. Плюс я бы сделал нормальное обрезание, чтобы полслова в начале и конце не было.

P.S. Еще можно не лениться, а засунуть книгу в базу постранично статьями, красиво разбив.

в том-то и дело, что это самое простое.

В идеале нужно, чтобы в квадрате, скажем 100х200 было 10 строк выровненных по ширине, и последнее слово было ровно прижато к правому краю.

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

Может быть просто кто-то видел что-то подобное на www? Может, передраконю.

Хотя есть подозрение что решения просто нет.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#6

А при чём тут сервер. Вы в сторону CSS не смотрели, в частности style="text-align:justify;" ?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
AlExTeam
На сайте с 12.08.2010
Offline
34
#7

ясно.

Будем считать, что тема закрыта

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий