Я создаю движок epub, который может читать ePub books
со многими функциями, такими как нумерация страниц, добавление заметок, выделение, поиск и т. Д. Все работает нормально, но я застрял с 2 проблемами.
Первый: функция разбивки на страницы, как вы знаете, представляет собой функцию JavaScript, которая делит содержимое HTML-файла на страницы на основе фрейма веб-просмотра, который его загружает, и поскольку HTML-файл может содержать текст и изображения изображения также могут быть разбиты на страницы, поэтому они будут разделены на 2 страницы, что не создает сцен. Я хочу, чтобы все изображение отображалось, особенно на титульной странице.
Второй: обычно я получаю пустую страницу в конце главы (html-файл). Знаете, как я могу это предотвратить?
Это функции JavaScript
, которые я использую для разбивки на страницы:
function setupBookColumns(){
var body = document.getElementsByTagName('body')[0].style;
body.marginLeft = 0;
body.marginRight = 0;
body.marginTop = 0;
body.marginBottom = 0;
var bc = document.getElementById('book-columns').style;
bc.width = (window.innerWidth * 2) + 'px !important';
bc.height = (window.innerHeight-kMaxFont) + 'px !important';
bc.marginTop = '0px !important';
bc.webkitColumnWidth = window.innerWidth + 'px !important';
bc.webkitColumnGap = '0px';
bc.overflow = 'visible';
if ( gCurrentPage < 0 )
gCurrentPage = 1;
gProgress = gPosition = 0;
var bi = document.getElementById('book-inner').style;
bi.marginLeft = '0px';
bi.marginRight = '0px';
bi.padding = '0';
gPageCount = document.body.scrollWidth / window.innerWidth;
// Adjust the page count to 1 if it's invalid
if (gPageCount < 1) {
gPageCount = 1;
}
}
function paginate()
{
if (gClientHeight == undefined) {
gClientHeight = document.getElementById('book-columns').clientHeight;
}
var leftBlocker = document.getElementById('left-blocker');
var parent = leftBlocker.parentNode;
parent.removeChild(leftBlocker);
leftBlocker.style.left = '-200px';
var rightBlocker = document.getElementById('right-blocker');
parent.removeChild(rightBlocker);
rightBlocker.style.left = '-200px';
setupBookColumns();
parent.appendChild(leftBlocker);
parent.appendChild(rightBlocker);
}
Я загружаю html-файл (файл главы) в webView
, когда он заканчивает загрузку, я вызываю функцию paginate, которую я разместил выше ... это дает количество страниц, основанное на объеме текста, размере текста, кадр того, что содержит текст (в моем случае это webView) .. так что я могу идти вперед и идти назад, используя функцию JavaScript.