2

アプリケーションで epub ブックを使用したい。このリンクhttp://www.siegmann.nl/epublib/androidを見つけて、私の epub ブックを開きました。

epub ブックのテキストを表示する方法を理解しています。

しかし、画像、CSS ファイル、およびリンクに問題があります。それらの URL は、アセット フォルダーへの URL です。たとえば、次のようになります。

file:///android_asset/index_split_000.html#back_note_1 File:///android_asset/images/image-1.jpeg

そして、assets フォルダには、このような HTML ページはなく、image フォルダもありません。epub zip ファイルのみがあります。

すべての内部ファイルを使用するにはどうすればよいですか?

私のコード:

WebView webView=(WebView) findViewById(webView);
List<Chapter> chapters=new ArrayList<Chapter>();
AssetManager assetManager = getAssets();
    try{   
        //find input Stream for book
        InputStream epubInputStream = assetManager.open("xxxxx.epub");
        //Load book from input stream
        book = (new EpubReader()).readEpub(epubInputStream);

       //Log the book's cover image property
        Bitmap coverImage =     BitmapFactory.decodeStream(book.getCoverImage().getInputStream());
        //Log.i("epublib", "CoverImage is" + coverImage.getWidth()+" by "+coverImage.getHeight()+" pixels");

        //Log the tables of contents
        logTableOfContents(book.getTableOfContents().getTocReferences(),0);


    }
    catch(IOException e){
        Log.e("epublib", e.getMessage());
    }




private void logTableOfContents(List<TOCReference> tocReferences, int depth) {

    if (tocReferences == null) {

      return;

    }

    for (TOCReference tocReference : tocReferences) {

      StringBuilder tocString = new StringBuilder();



      try {
          Chapter chapter=new Chapter();

          String s=new String(tocReference.getResource().getData());
          chapter.setTitle(tocReference.getTitle());
          chapter.setContent(s);
          chapters.add(chapter);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

      logTableOfContents(tocReference.getChildren(), depth + 1);

    }

  }

章は私自身のクラスです:

public class Chapter {

String title;
String content;

public Chapter(String titlt,String content) {
    this.title=titlt;
    this.content=content;
}

public Chapter() {
}

public String getTitle() {
    return title;
}
public String getContent() {
    return content;
}
public void setTitle(String title) {
    this.title = title;
}
public void setContent(String content) {
    this.content = content;
}

}

データを webview にロードするには:

 webView.loadDataWithBaseURL("file:///android_asset/",chapters.get(index).getContent(), "text/html", "utf-8", null);
4

2 に答える 2