How to split up Epub Html into pages according to screen size

前端 未结 3 1493
盖世英雄少女心
盖世英雄少女心 2021-02-01 08:56

I\'m developing an Android application that reads ebooks (in epub format) and as for now I\'m using Paul Siegeman\'s epublib library that is really a very good epub reader but i

相关标签:
3条回答
  • 2021-02-01 09:07

    Follow this github account.

    FbReader provide some great libraries for epub and pdf reader. Try this....

    or

    You can Make your own custom WebView by extending WebView. Here you can place and modify all the functionalities you want from your WebView.

    My colleague made a reader using this FbReader and It was fabulous.

    0 讨论(0)
  • 2021-02-01 09:15

    Hey I think this will help you. The answer by Nacho L worked for me. Here HTML book-like pagination?

    0 讨论(0)
  • 2021-02-01 09:16

    I have done pagination effect in android like this..

    -> create a custom webview class.
    -> set below clients and load url then you will get horizontal scrolling with page count.
    -> Lock the webview default scroll.
    -> For smooth pagination effect instead of moving scroll of webview ,move the entire webview so for one page there would be one webview.
    -> Use your own viewflippers to buffer previous and next pages.


    I have done all these implementations and I made a product for an organisation.Just I am sharing my idea how to approach towards the best solution.Instead of using third parities and stucking in the middle due to limitation of that sdk ,make every thing your own.

    private class MyWebClient extends WebViewClient
        {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
    
                super.onPageStarted(view, url, favicon);
            }
            @Override
            public void onPageFinished(WebView view, String url) 
            {
                super.onPageFinished(view, url);
    
                final MyWebView myWebView = (MyWebView) view;
    
    
                    String varMySheet = "var mySheet = document.styleSheets[0];";
    
                    String addCSSRule = "function addCSSRule(selector, newRule) {"
                            + "ruleIndex = mySheet.cssRules.length;"
                            + "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);"
    
                            + "}";
    
                    String insertRule1 = "addCSSRule('html', 'padding: 0px; height: "
                            + (myWebView.getMeasuredHeight()/getContext().getResources().getDisplayMetrics().density )
                            + "px; -webkit-column-gap: 0px; -webkit-column-width: "
                            + myWebView.getMeasuredWidth() + "px;')";
    
    
    
                    myWebView.loadUrl("javascript:" + varMySheet);
                    myWebView.loadUrl("javascript:" + addCSSRule);
                    myWebView.loadUrl("javascript:" + insertRule1);
    
    
    
    
            }
        }
    
        private class MyWebChromeClient extends WebChromeClient
        {
            @Override
            public void onProgressChanged(WebView view, int newProgress) 
            {
                super.onProgressChanged(view, newProgress);
    
                if(newProgress == 100)
                {
                    postDelayed(new Runnable() 
                    {
                        @Override
                        public void run() 
                        {
                            calculateNoOfPages();
                        }       
    
                    },200);
                }
            }
        }
    private void calculateNoOfPages()
        {
            if(GlobalSettings.EPUB_LAYOUT_TYPE == GlobalConstants.FIXED)
            {
    
            }
            else
            {
                if(getMeasuredWidth() != 0)
                {
                    int newPageCount = computeHorizontalScrollRange()/getMeasuredWidth();
                    getData().getChapterVO().setPageCount(newPageCount);
    
                }
            }
        }
    @Override
        public int computeHorizontalScrollRange() {
            // TODO Auto-generated method stub
            return super.computeHorizontalScrollRange();
        }
    

    one you load url to

    0 讨论(0)
提交回复
热议问题