Java 解析epub格式電子書,helloWorld程序,附帶源程序和相關jar包

秀才坤坤出品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();
		}
		
	}

}

 若有不明白和寫的不對的地方,敬請評論。

相關文章
相關標籤/搜索