LINUX.ORG.RU

Онлайн-читалка FB2


0

1

Пишу сейчас онлайн-читалку для книг FB2 на PHP, чтобы прямо из браузера можно было бы читать. Нарыл XSLT-шаблон, который конвертирует формат FB2 в XHTML. В результате получилась одна большая строка, с помощью echo можно вывести всю книгу на одну страницу целиком. Это, разумеется, не дело, и я пытаюсь разбить эту строку на фрагменты. Вот, собственно говоря, ключевой кусок кода:

$a=transform("example.fb2", "FB2_22_xhtml.xsl");
$tok= explode("</div>",$a);
$x = $_GET[p];
$y = ($x-1) * 20;
?>
<table width="70%" border="1" align="center" height="800" cellpadding="10">
<tr>
<td>

<?php
 for ($i=$y; $i<($y+20); $i++) {
	echo $tok[$i]." ";
}
?>

</td>

</tr>
</table>

Получившуюся огромную строку $a, представляющую собой книгу целиком, я разбил на массив $tok, представляющий собой отдельный абзац (там каждый абзац - это <div>), и пытаюсь этот массив выводить порциями в цикле, по 20 абзацей на странице. Параметр p - это уже «очеловеченный» номер получившейся страницы.

Недостаток этого метода - количество абзацев на странице каждый раз разный, а первая страница, на которой также присутствуют заглавие, картинка, - очень большая по величине страницы, и я это таким методом регулировать не могу. Но другого метода для разбиения книги придумать не могу. Есть ли у кого идеи, как можно разбить книгу более оптимальным способом?

★★★★★

P.S.

Окончил там курсы “PHP для начинающих”, “PHP для профессионалов”, “Основы JavaScript”

Судя по представленному выше коду, как-то хреново ты их окончил...

VirRaa ★★★
()

Разбивать и форматировать на стороне клиента, подгружать динамически.

note173 ★★★★★
()
Ответ на: комментарий от Rinaldus

И тогда будет рваться слово прямо посередине.

Ну, если вас на курсах не учили обрезать слова правильно, делить их по знакам пробела, то чего ты тут добиваешься? Что бы тебе всё разжевали?

VirRaa ★★★
()

Только клиент будет знать, сколько помещается на экран. Соответственно, на клиенте и делать разбивку.

Wizard_ ★★★★★
()

1) fb2 не нужен.

2) Читать можно и в браузере, но лучше, если весь текст будет скачан заранее. А то придётся переворачивать страницы только на станциях метро...

Miguel ★★★★★
()

Грузи всю книгу в fb2 и обрабатывай на клиенте через js. gz и кэш браузера спасет от кучи трафика. Это не такой уж и сложный формат, а благодаря canvas иллюстрации реализовать очень просто.

Orlangoor ★★★★★
()

Но другого метода для разбиения книги придумать не могу. Есть ли у кого идеи, как можно разбить книгу более оптимальным способом?

Никак не разбивай. Страницы не нужны при чтении с экрана, лучше сосредоточь усилия на удобной системе закладок - полезнее будет.

П.С. читаю много худ. литературы с мониторов.

Norgat ★★★★★
()

Ок, киллерфичи читалки? Чем оно (будет) лучше той, что на флибусте например?

Gunnerua
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.