首页
编程随笔
Java笔记
Html/Css/Js
Android
后端笔记
服务器搭建
BUG收集
Java异常
Android异常
在线工具
Json格式化
编码/解码
Epub在线编辑
登录
发布文章
个人文章
退出登录
首页
技术教程
BUG收集
在线工具
资源下载
登录
发布文章
退出登录
搜索
当前位置:
首页
-
博客
- 正文
关闭
使用epublib提取epub信息
更新时间:2022-06-26 16:10:31
阅读数:745
发布者:落幕
### 1、引入依赖 最新版获取:https://mvnrepository.com
com.positiondev.epublib
epublib-core
3.1
### 2、实例代码 ```java import nl.siegmann.epublib.domain.*; import nl.siegmann.epublib.epub.EpubReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.List; public class EpubTest { public static void main(String[] args) { // epub文件 File file = new File("1.epub"); InputStream in = null; try { //从输入流当中读取epub格式文件 EpubReader reader = new EpubReader(); in = new FileInputStream(file); Book book = reader.readEpub(in); //获取到书本的头部信息 Metadata metadata = book.getMetadata(); System.out.println("FirstTitle为:" + metadata.getFirstTitle()); //获取到书本的全部资源 Resources resources = book.getResources(); System.out.println("所有资源数量为:" + resources.size()); //获取所有的资源数据 Collection
allHrefs = resources.getAllHrefs(); for (String href : allHrefs) { Resource resource = resources.getByHref(href); //data就是资源的内容数据,可能是css,html,图片等等 byte[] data = resource.getData(); // 获取到内容的类型 css,html,还是图片 MediaType mediaType = resource.getMediaType(); } //获取到书本的内容资源 List
contents = book.getContents(); System.out.println("内容资源数量为:" + contents.size()); //获取到书本的spine资源 线性排序 Spine spine = book.getSpine(); System.out.println("spine资源数量为:" + spine.size()); //通过spine获取所有的数据 List
spineReferences = spine.getSpineReferences(); StringBuilder sb = new StringBuilder(); for (SpineReference spineReference : spineReferences) { Resource resource = spineReference.getResource(); //data就是资源的内容数据,可能是css,html,图片等等 byte[] data = resource.getData(); sb.append(new String(data, StandardCharsets.UTF_8)).append("
"); System.out.println(new String(data, StandardCharsets.UTF_8)); // 获取到内容的类型 css,html,还是图片 MediaType mediaType = resource.getMediaType(); } //获取到书本的目录资源 TableOfContents tableOfContents = book.getTableOfContents(); System.out.println("目录资源数量为:" + tableOfContents.size()); //获取到目录对应的资源数据 List
tocReferences = tableOfContents.getTocReferences(); for (TOCReference tocReference : tocReferences) { Resource resource = tocReference.getResource(); //data就是资源的内容数据,可能是css,html,图片等等 byte[] data = resource.getData(); // 获取到内容的类型 css,html,还是图片 MediaType mediaType = resource.getMediaType(); if (tocReference.getChildren().size() > 0) { //获取子目录的内容 } } } catch (Exception e) { e.printStackTrace(); } finally { //一定要关闭资源 try { if (in != null) { in.close(); } } catch (IOException e) { e.printStackTrace(); } } } } ```