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中点击项 ...
随机推荐
- [转载]C#.NET中Dns类的常用方法及说明
IP是一种普遍应用于因特网.允许不同主机能够相互找到对方的寻址协议.IP地址由4个十进制的数字号码所组成,而每一个号码的值介于0~255之间,它虽然解决了网络上计算机的识别问题,但是IP地址确不容易记 ...
- 【NOIP 2015 DAY2 T3】 运输计划 (树链剖分-LCA)
题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了 L 国的所有星球. 小 P 掌管一家 ...
- Altium Designer学习:PCB只看当前层
1 Shift+S 这个快捷键能高亮当前层,并且使其他层变成灰色,见下图: 2 隐藏指定层 在图中右下角的地方,右键,会弹出一个选项条,选择Hide Layers,可以选 ...
- Layout Resource官方教程(1)简介
Layout Resource SEE ALSO Layouts A layout resource defines the architecture for the UI in an Activit ...
- Android开发UI之Notification
Notification,顾名思义,通知,就是我们常说的系统推送. 官网链接:http://developer.android.com/reference/android/app/Notificati ...
- zabbix中文配置指南(转)-服务器监控
一.Zabbix简介 1.1 Zabbix简介 Zabbix是一个企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利.官方网站:htt ...
- Java 回调函数
下面使用java回调函数来实现一个测试函数运行时间的工具类: 如果我们要测试一个类的方法的执行时间,通常我们会这样做: public class TestObject { /** * 一个用来被测试的 ...
- codeforces 652E Pursuit For Artifacts 边双连通分量
题意:n个点,m条边的无向图,有的边上有标记,每条边只能走一次 给你一个起点,一个终点,询问是否能找到从起点到终点的路径,这条路径至少包含一条含有标记的边 分析:然后边双缩点 下面介绍一下边双的性质 ...
- 修改ruby gem源为ruby.taobao.org
由于网络原因,导致从rubygems.org下载gem文件较慢或者间歇性的连接失败,所以可以修改gem源为ruby.taobao.org.具体可以用 gem install rails -V 来查看执 ...
- QT-opencv小结
gcc –v 4.5 cmake编译opencv 2.4.4 ox00000005错误(gcc版本不对) gcc –v4.5 <----------qt 推荐打包,而不是static