Jinwen Xie

一边工作,一边学习;写写代码,看看书,追追剧,走走世界!

Epubjs阅读器安装和使用

18 Nov 2019 »

npm安装

npm install epubjs

在Vue中使用的话,可能会遇到this.rendition.on(‘touchstart’, {})或者其他事件无效的问题,这时候,我们可以重新安装epubjs,但是需要特定的版本,我们可以用@来固定版本安装,命令如下:

npm install epubjs@0.3.71

生成Book对象

 this.book = new Epub(BOOK_URL)

通过Book.renderTo生成Rendition对象

// read是DOM标签的id
this.rendition = this.book.renderTo('read', {
	width: window.innerWidth,
	height: window.innerHeight,
	method: 'default' //兼容微信
})

通过Rendtion.display渲染电子书

this.rendition.display()

ePub电子书翻页

上一页

function prevPage() {
	if (this.rendition) {
	  this.rendition.prev()
	}
}

下一页

function nextPage() {
	if (this.rendition) {
	  this.rendition.next()
	}
}

ePub电子书的字号设置和场景切换

设置主题

function setTheme(index) {
	this.themes.select(this.themeList[index].name)
	this.defaultTheme = index
}

注册主题

function registerTheme() {
	this.themeList.forEach(theme => {
	  this.themes.register(theme.name, theme.style)
	})
}

设置字号大小

function setFontSize(fontSize) {
	this.defaultFontSize = fontSize
	if (this.themes) {
	  this.themes.fontSize(fontSize + 'px')
	}
}

ePub电子书生成目录和定位信息

Book对象的钩子函数ready

this.book.ready.then(() => {
	// 生成目录
	this.navigation = this.book.navigation
	// 生成Locations对象
	return this.book.locations.generate()
}).then(result => {
	// 保存locations对象
	this.locations = this.book.locations
	// 标记电子书为解析完毕状态
	this.bookAvailable = true
})

ePub电子书通过百分比进行定位

function onProgressChange(progress) {
  const percentage = progress / 100
  const location = percentage > 0 ? this.locations.cfiFromPercentage(percentage) : 0
  this.rendition.display(location)
}