admin管理员组文章数量:1028168
鸿蒙NEXT版仿华为阅读App的浏览MOBI电子书
Reader Kit是HarmonyOS NEXT从5.0.4版本(对应API 16)开始提供的阅读服务,它支持txt、epub、mobi、azw、azw3等多种格式的电子书籍,具备电子书的解析、排版、阅读交互能力,能够帮助开发者快速构建书籍阅读能力。
使用阅读服务之前,要先在ETS代码开头添加以下的导包语句,表示引入阅读服务需要的bookParser、readerCore、ReadPageComponent等模块,及其依赖的BusinessError模块:
代码语言:javascript代码运行次数:0运行复制import { bookParser, readerCore, ReadPageComponent } from '@kit.ReaderKit';
import { BusinessError } from '@kit.BasicServicesKit';
其中ReadPageComponent为界面布局需要的阅读页组件,用来展示电子书页面内容。ReadPageComponent组件的构造接口可输入以下字段:
controller:ReadPageComponent组件的控制器,取值为readerCore.ReaderComponentController类型。
readerCallback:ReadPageComponent组件的回调函数,其中控制器对象会在第二个回调参数返回(第一个回调参数为BusinessError类型的出错信息)。
注意,ReadPageComponent组件的控制器与其他组件的控制器不一样,其他组件的控制器只需调用构造接口即可使用,但ReadPageComponent组件的控制器仅仅调用构造接口是不够的,还得从readerCallback字段的回调参数中获取最新的控制器对象,然后才能正常调用控制器的相关方法。
控制器类型readerCore.ReaderComponentController主要提供了下列方法:
init:初始化控制器,使用Promise异步回调。
registerBookParser:注册书籍解析器。书籍解析器为bookParser.BookParserHandler类型。
setPageConfig:设置或者修改页面排版属性。排版属性为readerCore.ReaderSetting类型。
startPlay:以指定阅读进度打开书籍,使用Promise异步回调。
flipPage:触发ReadPageComponent组件执行翻页动作。
releaseBook:释放书籍资源,在退出阅读器等释放资源场景时使用。
以上几个方法中,init和registerBookParser是必须调用的,而setPageConfig可调可不调,若不调就按照默认格式排版。registerBookParser方法输入的书籍解析器由bookParser.getDefaultHandler获得,该接口可从指定的文件路径获取默认的书籍解析器。
除此以外,书籍解析器BookParserHandler还提供了下列的常用方法:
getBookInfo:获取书籍信息。
getCatalogList:获取书籍目录列表。
getSpineList:获取书脊内容列表。
getResourceContent:获取书籍内容资源。此接口可获取书封资源比如书籍封面。
由于Reader Kit只能加载应用沙箱内部的电子书文件,因此其他来源的电子书必须先复制到应用沙箱,再让电子书控制器加载沙箱电子书。为此可将电子书籍的浏览功能分解成以下几个步骤:
1、给ETS页面声明一个控制器实例,并在build函数中添加ReadPageComponent组件的布局内容,如下所示:
代码语言:javascript代码运行次数:0运行复制private readerController = new readerCore.ReaderComponentController();
build() {
Column() {
Stack() {
ReadPageComponent({
controller: this.readerController,
readerCallback: (err: BusinessError, data: readerCore.ReaderComponentController) => {
this.readerController = data;
}
})
}.width('100%').height('100%')
}.width('100%')
}
2、把其他地方的电子书文件复制到应用内部的沙箱路径,比如下面代码把资源目录下的kite.mobi文档复制到了应用沙箱。
代码语言:javascript代码运行次数:0运行复制let context = getContext() as common.UIAbilityContext;
// 确保在工程目录src/main/resources/rawfile里存在kite.mobi文档
let filePath = context.filesDir + '/' + this.fileName;
let res = fileIo.accessSync(filePath);
if (!res) {
let content = context.resourceManager.getRawFileContentSync('rawfile/'+this.fileName);
let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
fileIo.writeSync(file.fd, content.buffer);
fileIo.closeSync(file.fd);
}
3、调用电子书控制器的registerBookParser方法,注册指定路径电子书的书籍解析器,注册代码如下所示:
代码语言:javascript代码运行次数:0运行复制(async () => { // 异步方式加载电子书文档
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
// 组件控制器初始化,用于控制ReadPageComponent调用排版引擎
this.readerController.init(context);
// 初始化书籍解析器
let parserHandler = await bookParser.getDefaultHandler(filePath);
// 注册解析能力到控制器中,用于排版引擎的调用。
this.readerController.registerBookParser(parserHandler);
// 调用打开书籍接口,跳章至对应进度
this.readerController.startPlay(0, '');
})() // 末尾的一对括号必不可少,不然异步代码块就不会被执行
以上电子书加载代码对应的MOBI文档渲染和翻页效果如下图所示。
鸿蒙NEXT版仿华为阅读App的浏览MOBI电子书
Reader Kit是HarmonyOS NEXT从5.0.4版本(对应API 16)开始提供的阅读服务,它支持txt、epub、mobi、azw、azw3等多种格式的电子书籍,具备电子书的解析、排版、阅读交互能力,能够帮助开发者快速构建书籍阅读能力。
使用阅读服务之前,要先在ETS代码开头添加以下的导包语句,表示引入阅读服务需要的bookParser、readerCore、ReadPageComponent等模块,及其依赖的BusinessError模块:
代码语言:javascript代码运行次数:0运行复制import { bookParser, readerCore, ReadPageComponent } from '@kit.ReaderKit';
import { BusinessError } from '@kit.BasicServicesKit';
其中ReadPageComponent为界面布局需要的阅读页组件,用来展示电子书页面内容。ReadPageComponent组件的构造接口可输入以下字段:
controller:ReadPageComponent组件的控制器,取值为readerCore.ReaderComponentController类型。
readerCallback:ReadPageComponent组件的回调函数,其中控制器对象会在第二个回调参数返回(第一个回调参数为BusinessError类型的出错信息)。
注意,ReadPageComponent组件的控制器与其他组件的控制器不一样,其他组件的控制器只需调用构造接口即可使用,但ReadPageComponent组件的控制器仅仅调用构造接口是不够的,还得从readerCallback字段的回调参数中获取最新的控制器对象,然后才能正常调用控制器的相关方法。
控制器类型readerCore.ReaderComponentController主要提供了下列方法:
init:初始化控制器,使用Promise异步回调。
registerBookParser:注册书籍解析器。书籍解析器为bookParser.BookParserHandler类型。
setPageConfig:设置或者修改页面排版属性。排版属性为readerCore.ReaderSetting类型。
startPlay:以指定阅读进度打开书籍,使用Promise异步回调。
flipPage:触发ReadPageComponent组件执行翻页动作。
releaseBook:释放书籍资源,在退出阅读器等释放资源场景时使用。
以上几个方法中,init和registerBookParser是必须调用的,而setPageConfig可调可不调,若不调就按照默认格式排版。registerBookParser方法输入的书籍解析器由bookParser.getDefaultHandler获得,该接口可从指定的文件路径获取默认的书籍解析器。
除此以外,书籍解析器BookParserHandler还提供了下列的常用方法:
getBookInfo:获取书籍信息。
getCatalogList:获取书籍目录列表。
getSpineList:获取书脊内容列表。
getResourceContent:获取书籍内容资源。此接口可获取书封资源比如书籍封面。
由于Reader Kit只能加载应用沙箱内部的电子书文件,因此其他来源的电子书必须先复制到应用沙箱,再让电子书控制器加载沙箱电子书。为此可将电子书籍的浏览功能分解成以下几个步骤:
1、给ETS页面声明一个控制器实例,并在build函数中添加ReadPageComponent组件的布局内容,如下所示:
代码语言:javascript代码运行次数:0运行复制private readerController = new readerCore.ReaderComponentController();
build() {
Column() {
Stack() {
ReadPageComponent({
controller: this.readerController,
readerCallback: (err: BusinessError, data: readerCore.ReaderComponentController) => {
this.readerController = data;
}
})
}.width('100%').height('100%')
}.width('100%')
}
2、把其他地方的电子书文件复制到应用内部的沙箱路径,比如下面代码把资源目录下的kite.mobi文档复制到了应用沙箱。
代码语言:javascript代码运行次数:0运行复制let context = getContext() as common.UIAbilityContext;
// 确保在工程目录src/main/resources/rawfile里存在kite.mobi文档
let filePath = context.filesDir + '/' + this.fileName;
let res = fileIo.accessSync(filePath);
if (!res) {
let content = context.resourceManager.getRawFileContentSync('rawfile/'+this.fileName);
let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
fileIo.writeSync(file.fd, content.buffer);
fileIo.closeSync(file.fd);
}
3、调用电子书控制器的registerBookParser方法,注册指定路径电子书的书籍解析器,注册代码如下所示:
代码语言:javascript代码运行次数:0运行复制(async () => { // 异步方式加载电子书文档
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
// 组件控制器初始化,用于控制ReadPageComponent调用排版引擎
this.readerController.init(context);
// 初始化书籍解析器
let parserHandler = await bookParser.getDefaultHandler(filePath);
// 注册解析能力到控制器中,用于排版引擎的调用。
this.readerController.registerBookParser(parserHandler);
// 调用打开书籍接口,跳章至对应进度
this.readerController.startPlay(0, '');
})() // 末尾的一对括号必不可少,不然异步代码块就不会被执行
以上电子书加载代码对应的MOBI文档渲染和翻页效果如下图所示。
本文标签: 鸿蒙NEXT版仿华为阅读App的浏览MOBI电子书
版权声明:本文标题:鸿蒙NEXT版仿华为阅读App的浏览MOBI电子书 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747498974a2169189.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论