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 解析epub格式电子书,helloWorld程序,附带源程序和相关jar包的更多相关文章
- PDF转EPUB格式电子书经验总结
依据本人将PDF转换为EPUB电子书的经验,总结整理了这篇文章.因本人水平有限,难免有错误和不足之处,望大家及时批评指正. 写这篇文章时,假定读者已经会使用文中所列出软件的基本操作,比方如何用No ...
- Java语言入门-第一个HelloWorld程序
1.官网下载Jdk 这里给出官网下载网址:https://www.oracle.com/technetwork/java/javase/downloads . 1.1 打开之后出现如下界面: 1.2选 ...
- java 解析json格式数据(转)
2012-07-30 16:43:54| 分类: java | 标签:java json |举报|字号 订阅 有时候我们可能会用到json格式的数据进行数据的传输,那么我们怎么把接收到 ...
- JAVA学习之第一个HelloWorld程序
第一个HelloWorld程序 第一步,创建java类型的文件 第二步,在创建文件的目录中打开cmd窗口 第三步,使用javac 命令将java文件编译为.class类型的字节码文件 第四步,使用ja ...
- java 解析json格式数据
有时候可能会用到json格式进行数据的传输,那么怎么把接收到的数据解析出来呢? 下面介绍两种解析json数据的方法: 1.通过谷歌的Gson来进行解析: json数据:sTotalString = { ...
- 以jar包为容器的java程序访问一同打到jar包里的配置文件的方法
Java程序有时会被打到jar包里执行,同时src/main/resources里一些配置文件也会被打进去. 比如,src/main/resources下有一个box目录,里面有几个json文件,用m ...
- java算法面试题:从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 ;读取docx 读取doc 使用poi 相关jar包提集提供下载
从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 1,张三,28 2,李四,35 3,张三,28 4,王五,35 5,张三,28 6,李四,35 7,赵六,28 ...
- Java中使用com.sun相关jar包出现编译错误,但是运行没有错误的解决方法和原因
[解决方法]如果你用的是Eclipse 在preference->java->complier->errors/warning->deprecated and restrict ...
- eclipse导出附带源码的jar包
最近在搞Andengine游戏开发,发现andengine的jar包可以直接点击查看源码,而其他项目的jar包却看不了,因此自己研究了下如何生成可以直接查看源码的jar包. 1.eclipse中点击项 ...
随机推荐
- Ubuntu之网络配置
一.配置大概分三类:通过配置文件配置.通过命令配置.通过图形化的网络连接菜单配置. 拨号无线等的没条件实验,不涉及. 主要文件:/etc/network/interfaces,这里是IP.网关.掩码等 ...
- linux登录后出现_bash-4.1#终端提示符异常
如果使用root用户登录出现上述提示,则需要需要重建 /root .bash_profile文件: 1. vi /root .bash_profile 2. 输入如下内容 # .bashrc # Us ...
- ANDROID_MARS学习笔记_S01原始版_009_SQLite
一.代码1.xml(1)activity_main.xml <?xml version="1.0" encoding="utf-8"?> <L ...
- S3C2410 实验三——跑马灯实验
http://www.evernote.com/shard/s307/sh/f2a748e7-34c4-4ce6-acac-82a756cc9e82/ad5813188d655e504857970db ...
- XML PUBLISHER输出excel禁止自动将数字格式化处理
方案1: 在 rtf template 里头添加 =T("域"). 方案2: 加个无中断空格 0xA0 In the rtf template, ...
- 我的第一个Struts程序
1.程序结构 2.各种文件 LoginAction.java package com.tfj.action; public class LoginAction { private String use ...
- 【转】Java 类的生命周期详解
一. 引 言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大 ...
- android 利用数字证书对程序签名
签名的必要性 1. 防止你已安装的应用被恶意的第三方覆盖或替换掉. 2. 开发者的身份标识,签名可以防止抵赖等事件的发生. 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样 ...
- MEF学习小结 z
1.什么是MEF. MEF,全称是Managed Extensibility Framework.它是.NET Framework4.0的一个类库,其主要目的是为了创建可扩展的应用程序.按照官方说法就 ...
- Selenium 实现联想下拉框
直接在文本框输入字符,并不能实现联想下拉框, 第一种方式:强制执行js driver.FindElement(By.Id("top_search_input")).SendKeys ...