5 Stimmen

Wie man alle Seiten und alle Kapitel unter Verwendung von nl.siegmann.epublib anzeigt

Dies ist, was ich versucht habe, um die Aufgabe zu erledigen. Wenn jemand helfen kann, wäre das sehr geschätzt. Also wird in diesem Code nur die Titelseite angezeigt. Ich las http://www.siegmann.nl/static/epublib/apidocs/ dass du getSpine() verwenden könntest, um alles zu bekommen, aber es hat in meinem Fall nur eine Sache angezeigt, die die Titelseite ist.

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();}

        //etwas mit dem Stream machen
    } catch (IOException e) {
        e.printStackTrace();
    }

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

3voto

wesdfgfgd Punkte 683

Also habe ich herausgefunden, dass das Arbeiten mit dem Abschnitt auf http://www.siegmann.nl/static/epublib/apidocs/ immer noch nach Abschnitten funktioniert. Also habe ich versucht herauszufinden, wie viele Abschnitte es gibt, indem ich Zählzahlen identifiziert habe. Dann habe ich diese Zahlen in Resource res = spine.getResource(i); platziert. Wenn du Resource res = spine.getResource(2); machen würdest, würde es den Abschnitt 2 anzeigen, der Kapitel 2 sein sollte, es sei denn, jemand vermasselt das Format des Epubs.

Spine spine = book.getSpine(); 
List 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");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X