Как отобразить все страницы и все главы, используя nl.siegmann.epublib - PullRequest
5 голосов
/ 24 ноября 2011

Это то, что я пытался выполнить, если кто-то может помочь, было бы очень признательно. Так что в этом коде будет отображаться только титульная страница. Я прочитал http://www.siegmann.nl/static/epublib/apidocs/, что вы можете использовать getSpine(), чтобы получить все, но в моем случае только одна вещь отображалась на обложке.

webView = (WebView)findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
AssetManager am = getAssets();
try {
    InputStream epubInputStream = am.open(bookName);
    book = (new EpubReader()).readEpub(epubInputStream);
} catch (IOException e) {
    Log.e("epublib", e.getMessage());
}

Spine spine = book.getSpine(); 
for (SpineReference bookSection : spine.getSpineReferences()) {
    Resource res = bookSection.getResource();

    try {
        InputStream is = res.getInputStream();
        StringBuffer string = new StringBuffer();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));

        try {
            while ((line = reader.readLine()) != null) {
                linez =   string.append(line + "\n").toString();
            }
        } catch (IOException e) {e.printStackTrace();}

        //do something with stream
    } catch (IOException e) {
        e.printStackTrace();
    }

}
webView.loadData(linez, "text/html", "utf-8");

1 Ответ

3 голосов
/ 25 ноября 2011

Итак, что я понял, используя позвоночник на http://www.siegmann.nl/static/epublib/apidocs/, так это то, что он все еще работает по разделам. Поэтому я попытался выяснить, сколько разделов существует, идентифицируя числа. Затем поместил эти цифры в Resource res = spine.getResource(i);. Если вы сделаете Resource res = spine.getResource(2); Это отобразит позвоночник 2, который должен быть главой 2, если кто-то не испортит формат epub.

Spine spine = book.getSpine(); 
List<SpineReference> spineList = spine.getSpineReferences() ;
int count = spineList.size();
tv.setText(Integer.toString(count));
StringBuilder string = new StringBuilder();
for (int i = 0; count > i; i++) {
    Resource res = spine.getResource(i);

    try {
        InputStream is = res.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        try {
            while ((line = reader.readLine()) != null) {
                linez =   string.append(line + "\n").toString();
            }

        } catch (IOException e) {e.printStackTrace();}

        //do something with stream
    } catch (IOException e) {
        e.printStackTrace();
    }

}
webView.loadData(linez, "text/html", "utf-8");
...