秀才坤坤出品
一、epub格式電子書
相關材料和源碼均在鏈接中可以下載:http://pan.baidu.com/s/1bnm8YXT
包括
1、JAVA項目工程test_epub,里面包括了jar包和一本epub電子書myBook.epub
2、epub相關jar包
3、電子書myBook.epub
epub格式這里就不仔細描述了,這里強調一點,epub格式是壓縮格式,只需將后綴改為.zip或.rar,解壓即可看到里面的文件內容。

二、JAVA解析.epub格式電子書,具體實現代碼如下。寫了一個簡單helloWorld程序,加入了相應的jar包。
程序說明:
1、讀取epub/myBook.epub文件。
2、修改metaData中的title
3、輸出新的.epub文件到工程目錄下。文件名mynewbook.epub
通過解壓mynewbook.epub文件,可以看到toc.ncx文件中的<docTitle>和content.opf中的<dc:title>標簽內容都進行了修改。
package com.hk;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import nl.siegmann.epublib.domain.Book;
import nl.siegmann.epublib.epub.EpubReader;
import nl.siegmann.epublib.epub.EpubWriter;
public class Test {
public static void main(String[] args) {
System.out.println("hello world");
EpubReader epubReader = new EpubReader();
//處理io流路徑
String currentPath = Thread.currentThread().getClass().getResource("/").toString();
String epubPath = currentPath + "epub/myBook.epub";
epubPath = epubPath.substring(6, epubPath.length());
epubPath = epubPath.replace("/", "//");
System.out.println(epubPath);
//讀epub文件
Book book = null;
try {
InputStream inputStr = new FileInputStream(epubPath);
book = epubReader.readEpub(inputStr);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//設置epub文件內title.
//本處修改了toc.ncx文件中的<docTitle>和content.opf中的<dc:title>標簽內容.
List<String> titlesList = new ArrayList<String>();
titlesList.add("test book");
book.getMetadata().setTitles(titlesList);
//write epub
EpubWriter epubWriter = new EpubWriter();
try {
OutputStream ouput = new FileOutputStream("mynewbook.epub");
epubWriter.write(book, ouput);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
如有不明白和寫的不對的地方,敬請評論。
