Я создаю программу для чтения ePub на IOS. В основном я использую uiwebview для загрузки файлов xhtml. Каждый раз, когда переворачивается страница, мне нужно загрузить файл с помощью uiwebview, а затем вызвать javascript для прокрутки до нужного смещения. Вот проблема: некоторые файлы xhtml большие (например,> 2 МБ), поэтому загрузка занимает слишком много времени. Поэтому анимация перелистывания страниц не такая плавная. Итак, я думаю, что могу загрузить xhtml один раз с помощью uiwebviewA , и каждый раз, когда страница переворачивается, я создаю еще один uiwebviewB и получаю необходимый html-контент (например, вторую страницу) из uiwebviewA. Таким образом, я мог ограничить html небольшим размером, а анимация перелистывания страниц должна быть плавной. Мой вопрос в том, что есть ли какая-либо библиотека javascript с открытым исходным кодом, которая может выполнить эту работу? Любые комментарии приветствуются!!
Javascript разделить HTML-контент
Ответы (2)
Не существует осмысленного, четко определенного способа разделить HTML-документ так, как вы, кажется, описываете. Вы путаете две очень разные вещи: (1) разделение рендеринга на фрагменты размером со страницу и (2) разделение исходного кода HTML. Иными словами, я не могу себе представить алгоритма, который разделил бы файл HTML на части так, чтобы последовательная композиция отображаемых частей была идентична визуализации исходного файла HTML. Другими словами, чтобы выяснить, как разделить HTML, если предположить, что это вообще возможно, вам придется проделать большую часть или всю работу, связанную с рендерингом страницы, что сведет на нет всю цель.
Вы должны отказаться от идеи разделения HTML. Все читатели электронных книг разбивают страницы, по сути, один раз отображая весь HTML-документ, затем «окно», «вырезку» и «смещение» или, в некоторых случаях, используя области CSS.
Есть несколько альтернатив, которые я могу придумать, если я понимаю, что вы пытаетесь сделать.
Уменьшите размер входных HTML-файлов, предварительно разбив их на части в начале рабочего процесса. Например, в одном известном мне проекте исходные (X)HTML-файлы имеют фрагменты дополнительной разметки, которые сообщают препроцессору, где при желании разделить их на отдельные файлы, что в данном случае является обходным путем для читателей электронных книг, которые не не учитывают свойства CSS
page-break-*
должным образом.Предварительно вычислите визуализацию следующей страницы в виде графики и используйте ее для перелистывания страниц.
Как уже говорилось, переосмыслите свою архитектуру перезагрузки всего HTML-документа для каждой страницы вашей книги. Если это просто эффекты перелистывания страниц, которые заставляют вас хотеть сделать это, то откажитесь от них.
Учтите, что многие программы для чтения электронных книг предоставляют режим прокрутки, не требующий разбивки на страницы, а некоторые (например, Himawari Reader) предоставляют только режим прокрутки, который некоторые читатели предпочитают. Вы можете выложить свою версию с прокруткой, а затем сделать пагинацию в версии 2.
Вы должны действительно проверить это:
И эта демонстрация, которая делает именно то, что вы просили:
http://cubiq.org/dropbox/SwipeView/demo/ereader/
Он берет текст (книгу) и разбивает текст на страницы, чтобы он соответствовал размеру экрана.
Я протестировал демо-версию на Android и iOS, и она отлично работает!