秀才坤坤出品java
1、epub格式電子書dom
相關材料和源碼均在連接中能夠下載:http://pan.baidu.com/s/1bnm8YXTspa
包括blog
一、JAVA項目工程test_epub,裏面包括了jar包和一本epub電子書myBook.epubip
二、epub相關jar包get
三、電子書myBook.epubinput
epub格式這裏就不仔細描述了,這裏強調一點,epub格式是壓縮格式,只需將後綴改成.zip或.rar,解壓便可看到裏面的文件內容。源碼
2、JAVA解析.epub格式電子書,具體實現代碼以下。寫了一個簡單helloWorld程序,加入了相應的jar包。string
程序說明:it
一、讀取epub/myBook.epub文件。
二、修改metaData中的title
三、輸出新的.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(); } } }
若有不明白和寫的不對的地方,敬請評論。