нумерация страниц и изображений в книгах ePub - PullRequest
3 голосов
/ 20 февраля 2012

Я создаю движок 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.

...