zoukankan      html  css  js  c++  java
  • Java 解析epub格式电子书,helloWorld程序,附带源程序和相关jar包

    秀才坤坤出品

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

     如有不明白和写的不对的地方,敬请评论。

  • 相关阅读:
    《JAVA多线程编程核心技术》 笔记:第四章、Lock的使用
    服务器负载粗略估算
    spring事务传播性理解
    BlockingQueue 阻塞队列2
    六大原则
    mycat之schema.xml理解
    mycat分库读写分离原理
    sqlservere连接问题
    java代码添加mysql存储过程,触发器
    Amoeba+Mysql实现读写分离+java连接amoeba
  • 原文地址:https://www.cnblogs.com/xckk/p/4598196.html
Copyright © 2011-2022 走看看