前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >鸿蒙NEXT版仿华为阅读App的浏览MOBI电子书

鸿蒙NEXT版仿华为阅读App的浏览MOBI电子书

作者头像
aqi00
发布于 2025-04-27 05:03:00
发布于 2025-04-27 05:03:00
20000
代码可运行
举报
文章被收录于专栏:老欧说安卓老欧说安卓
运行总次数:0
代码可运行

Reader Kit是HarmonyOS NEXT从5.0.4版本(对应API 16)开始提供的阅读服务,它支持txt、epub、mobi、azw、azw3等多种格式的电子书籍,具备电子书的解析、排版、阅读交互能力,能够帮助开发者快速构建书籍阅读能力。

使用阅读服务之前,要先在ETS代码开头添加以下的导包语句,表示引入阅读服务需要的bookParser、readerCore、ReadPageComponent等模块,及其依赖的BusinessError模块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
运行
AI代码解释
复制
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
运行
AI代码解释
复制
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
运行
AI代码解释
复制
(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文档渲染和翻页效果如下图所示。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老欧说安卓 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【拥抱鸿蒙】HarmonyOS NEXT实现双路预览并识别文字
> 我们在许多其他平台看到过OCR功能的应用,那么HarmonyOS在这方面的支持如何呢?我们如何能快速使用这一能力呢?使用这一能力需要注意的点有哪些呢?就让我们一起来探究吧~
郑知鱼
2025/06/03
1200
【拥抱鸿蒙】HarmonyOS NEXT实现双路预览并识别文字
鸿蒙运动开发:计算户外运动步频与步幅,与地图路线绘制
在户外运动中,步频(每分钟的步数)和步幅(每步的距离)是衡量运动效率和强度的关键指标。无论是跑步爱好者还是健身达人,了解这些数据不仅可以帮助他们优化运动表现,还能有效预防运动损伤。然而,如何在鸿蒙系统中准确计算步频和步幅,并将运动轨迹实时展示在地图上呢?本文将结合实际开发经验,深入解析从传感器数据采集到核心算法实现,再到地图路线绘制的全过程,带你一步步掌握户外运动数据的精准计算与可视化展示。
用户2475552
2025/06/04
1080
鸿蒙NEXT上传图片功能PhotoViewPicker核心功能解析
PhotoViewPicker 是鸿蒙系统中用于媒体资源选择的核心组件,通过它可以便捷地实现图片、视频等媒体文件的选择功能。下面从基本用法、参数配置到高级应用进行全面解析:
飞龙AI
2025/06/06
1270
鸿蒙NEXT版仿华为阅读App的浏览PDF文档
HarmonyOS NEXT自带的PDF Kit提供了PDF文档浏览和修改服务,不但支持预览PDF文档内容,还支持对PDF文档添加文本内容、图片、批注、页眉页脚、水印、背景图片、书签等。
aqi00
2025/04/21
1880
鸿蒙NEXT版仿华为阅读App的浏览PDF文档
【HarmonyOS NEXT】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下
应用开发中,我们经常会遇到一些文件原先是放在资源文件夹 rawfile下,但是逻辑处理时,需要转移到本地沙箱才能操作。这种情况下,就需要将将资源文件夹Resource-RawFile下的文件存放到沙箱目录下。
GeorgeGcs
2025/03/28
4440
在原生鸿蒙上开发一款绘画动画软件,然后制作动画短视频,发到 B 站会火?
以前我是在 web 端实现的,这次我把他搬到了原生鸿蒙平台了,然后开放给大家使用,一起来学习,等到上架的时候(预计 12 月 15 日之前),大家可以在应用市场搜索一下:IF画。这里有一个大福利,只要你画出来的比我好,哪怕一点,都会送你终身会员,大家尽情的画起来。回归正题,这次在原生鸿蒙实现整个软件,我们采用了鸿蒙端云一体化的能力来实现整个软件的开发,说实话,端云一体化对纯前端同学来说,真的比较友好、方便,减少了很多学习成本。
陈杨
2025/03/15
980
在原生鸿蒙上开发一款绘画动画软件,然后制作动画短视频,发到 B 站会火?
【HarmonyOS学习】应用文件访问
访问和管理应用文件,对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱目录,是应用文件目录与一部分系统文件所在的目录组成的集合。也就是应用可见的目录范围即为“应用沙箱目录”。
钟子翔
2024/12/24
860
71.[HarmonyOS NEXT 实战案例十] 电子书网格布局(上)
本教程将详细讲解如何使用HarmonyOS NEXT中的GridRow和GridCol组件实现电子书网格布局。通过网格布局,我们可以以美观、规整的方式展示各种电子书信息,为用户提供良好的浏览体验。
全栈若城
2025/06/08
610
鸿蒙NEXT版仿华为阅读App的逐页浏览PDF
上一篇文章虽然使用PdfView组件及其控制器实现了PDF文档的加载功能,但实际的渲染结果会把PDF的所有页面都显示出来,而非由用户控制的一页一页浏览。那么若想实现更加精细的浏览操作,就要引入PDF服务模块pdfService了。
aqi00
2025/04/24
1500
鸿蒙NEXT版仿华为阅读App的逐页浏览PDF
打造个人云端电子书库:Docker部署Talebook实现远程阅读
在追求便捷与高效的数字时代,将香橙派Orange Pi Zero3刷入CasaOS轻NAS系统,无疑为家庭数据存储与共享提供了新的选择。而结合Docker与cpolar内网穿透技术,更能让你的香橙派化身个人云端电子书库,实现远程管理与在线阅读的无缝衔接。
大海里的番茄
2024/11/08
5460
打造个人云端电子书库:Docker部署Talebook实现远程阅读
JAVA通过epublib解析EPUB格式的电子书
就像视频文件有 MP4,AVI,RMVB 等等一样!电子书也有很多种格式:一文看懂mobi,azw3,epub格式电子书
海加尔金鹰
2020/06/08
3.9K0
HarmonyOS开发:架构相关内容
在深入架构设计之前,先来了解一下HarmonyOS的分布式架构特点,这里只来分享几个它的核心特点:
三掌柜
2024/12/01
2230
HarmonyOS开发:架构相关内容
7 个最佳 Linux 电子书阅读器
摘要: 本文中我们涉及一些 Linux 最佳电子书阅读器。这些应用提供更佳的阅读体验甚至可以管理你的电子书。
用户8639654
2021/10/19
5.5K0
14.7K Star开源!一个很好用的电子书管理器,阅读器
开源日记
2024/03/02
6910
14.7K Star开源!一个很好用的电子书管理器,阅读器
【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码
官方文档关于屏幕录制的API和示例介绍获取简单和突兀。使用起来会让上手程度变高。所以特意开篇文章,讲解屏幕录制的使用。官方文档参见:使用AVScreenCaptureRecorder录屏写文件(ArkTS)
GeorgeGcs
2025/03/24
1610
【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码
【HarmonyOS NEXT】鸿蒙应用压缩和解压处理
鸿蒙应用中经常会遇到使用压缩包的场景。例如H5的离线包逻辑,需要提前将资源包下载到本地,进行压缩操作获取资源。
GeorgeGcs
2025/03/28
3260
用 Markdown 写一本自己的电子书吧(一)手动篇
不知道大家平时有没有阅读电子书的习惯,这里指的并不是 .txt 的文本文档,而是通常带有精美封面、便捷目录、图文并茂的 .epub 电子书。它是怎样实现这些效果的呢?我们能不能把自己平时用 Markdown 写的技术笔记、博客文章做成一本属于自己的电子书呢?
贤羽
2022/06/09
1.4K0
用 Markdown 写一本自己的电子书吧(一)手动篇
HarmonyOS NEXT 小说阅读器应用系列教程之电子书翻页效果实现
在移动设备上阅读电子书时,翻页效果对用户体验至关重要。一个流畅、自然的翻页动画能够让用户获得接近纸质书籍的阅读体验。本教程将详细介绍如何在HarmonyOS应用中实现三种常见的电子书翻页效果:左右翻页、上下翻页和覆盖翻页。
全栈若城
2025/05/19
750
使用Gitbook制作发布个人的电子书籍
Gitbook可以人每个人制作发布个人的电子书籍,并能最大程度上利用“群智”提高阅读品质和享受创作过程。
星哥玩云
2022/05/30
1.9K0
使用Gitbook制作发布个人的电子书籍
Koodo Reader电子书库本地部署结合内网穿透打造远程阅读环境
大家好!今天我们要聊的是如何在Windows系统电脑上本地部署Koodo Reader电子书阅读器,并结合Cpolar内网穿透工具实现远程访问。这样一来,你无需公网IP或复杂的路由器设置,就能随时随地访问你的电子书库。
命运之光
2024/12/31
3060
Koodo Reader电子书库本地部署结合内网穿透打造远程阅读环境
推荐阅读
相关推荐
【拥抱鸿蒙】HarmonyOS NEXT实现双路预览并识别文字
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验