EpubBookEnhanced
EpubBookEnhanced 是 EPUBime 库中的增强书籍对象,提供了更多便利方法和改进的可用性。该类是对基础 EpubBook 类的包装,提供了更丰富的功能和更简单的 API。
类定义
java
public class EpubBookEnhanced构造方法
EpubBookEnhanced(EpubBook book, File epubFile)
创建一个增强的书籍对象。
参数:
book: 基础 EpubBook 对象epubFile: EPUB 文件
方法
getMetadata()
获取元数据,保证不为 null。
返回值:
Metadata: 元数据对象
getTitle()
获取书籍标题,如果标题为空则返回空字符串。
返回值:
String: 书籍标题
getAuthor()
获取书籍作者,如果作者为空则返回空字符串。
返回值:
String: 书籍作者
getLanguage()
获取书籍语言,如果语言为空则返回空字符串。
返回值:
String: 书籍语言
getAllChapters()
获取所有章节的扁平列表(包括嵌套章节)。
返回值:
List<EpubChapter>: 所有章节的列表
findChapterByTitle(String title)
根据标题查找章节(不区分大小写)。
参数:
title: 要查找的章节标题
返回值:
EpubChapter: 找到的章节,如果未找到则返回 null
findChaptersByContentPattern(String pattern)
根据内容路径模式查找章节。
参数:
pattern: 要匹配的内容路径模式
返回值:
List<EpubChapter>: 匹配的章节列表
getChaptersByType(String type)
根据导航类型获取章节。
参数:
type: 导航类型 ("ncx", "nav", "landmarks", "page-list")
返回值:
List<EpubChapter>: 指定导航类型的章节列表
getFirstChapter()
获取第一个章节。
返回值:
EpubChapter: 第一个章节,如果没有章节则返回 null
getLastChapter()
获取最后一个章节。
返回值:
EpubChapter: 最后一个章节,如果没有章节则返回 null
getChapter(int index)
根据索引获取章节。
参数:
index: 章节索引(从 0 开始)
返回值:
EpubChapter: 指定索引的章节,如果索引无效则返回 null
getChapterCount()
获取总章节数(包括嵌套章节)。
返回值:
int: 总章节数
getResourcesByType(String mimeType)
根据类型获取资源。
参数:
mimeType: 要筛选的 MIME 类型
返回值:
List<EpubResource>: 指定类型的资源列表
getImageResources()
获取图像资源。
返回值:
List<EpubResource>: 图像资源列表
getCssResources()
获取 CSS 资源。
返回值:
List<EpubResource>: CSS 资源列表
getJsResources()
获取 JavaScript 资源。
返回值:
List<EpubResource>: JavaScript 资源列表
getCover()
获取封面资源(带回退机制)。
返回值:
EpubResource: 封面资源,如果未找到则返回 null
hasCover()
检查书籍是否有封面。
返回值:
boolean: 如果有封面返回 true
processChapterContent(EpubChapter chapter, Consumer<InputStream> processor)
使用流处理处理章节内容。
参数:
chapter: 要处理的章节processor: 内容处理器
异常:
BaseEpubException: 处理失败时抛出
getChapterContentAsString(EpubChapter chapter)
获取章节内容为字符串。
参数:
chapter: 章节对象
返回值:
String: 章节内容字符串,如果失败则返回 null
loadAllResources()
将所有资源数据加载到内存中。
异常:
IOException: 加载失败时抛出
getOriginalBook()
获取底层的 EpubBook 实例。
返回值:
EpubBook: 原始 EpubBook 的副本
getBookInfo()
获取基本书籍信息。
返回值:
String: 格式化的书籍信息
使用示例
java
// 创建增强书籍对象
EpubBook book = EpubReader.fromFile(new File("book.epub")).parse();
EpubBookEnhanced enhancedBook = new EpubBookEnhanced(book, new File("book.epub"));
// 获取书籍信息
System.out.println("标题: " + enhancedBook.getTitle());
System.out.println("作者: " + enhancedBook.getAuthor());
System.out.println("语言: " + enhancedBook.getLanguage());
// 获取所有章节
List<EpubChapter> allChapters = enhancedBook.getAllChapters();
System.out.println("总章节数: " + enhancedBook.getChapterCount());
// 查找特定章节
EpubChapter chapter = enhancedBook.findChapterByTitle("Introduction");
if (chapter != null) {
System.out.println("找到章节: " + chapter.getTitle());
}
// 获取特定类型的资源
List<EpubResource> images = enhancedBook.getImageResources();
List<EpubResource> cssFiles = enhancedBook.getCssResources();
// 检查是否有封面
if (enhancedBook.hasCover()) {
EpubResource cover = enhancedBook.getCover();
System.out.println("封面文件: " + cover.getHref());
}
// 获取书籍信息摘要
System.out.println(enhancedBook.getBookInfo());注意事项
EpubBookEnhanced是对EpubBook的包装,不会修改原始对象。- 提供了更丰富的查询和处理方法,简化了常见操作。
- 对于可能返回 null 的方法,提供了合理的默认值(如空字符串)。