实现epub的懒加载(未经广泛测试)

This commit is contained in:
ag2s20150909
2022-04-05 23:28:48 +08:00
parent d31f311c39
commit e8e368935a
38 changed files with 7432 additions and 33 deletions

View File

@@ -7,11 +7,6 @@
<link href="../Styles/main.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<!--<div class="logo">
<img alt="" class="logo" src="../Images/logo.png"/>
</div>-->
<br/>
<br/>
<h2 class="head">{title}</h2>
{content}
</body>

View File

@@ -60,11 +60,10 @@ abstract class AbsCallBack(
}
//UrlResponseInfo可能为null
override fun onResponseStarted(request: UrlRequest, info: UrlResponseInfo) {
this.mResponse = responseFromResponse(this.mResponse, info)
//打印协议,用于调试
DebugLog.i(javaClass.name, info.negotiatedProtocol)
DebugLog.i(javaClass.simpleName, "start[${info.negotiatedProtocol}]${info.url}")
if (eventListener != null) {
eventListener.responseHeadersEnd(mCall, this.mResponse)
eventListener.responseBodyStart(mCall)
@@ -108,6 +107,7 @@ abstract class AbsCallBack(
buffer.asResponseBody(contentType)
val newRequest = originalRequest.newBuilder().url(info.url).build()
this.mResponse = this.mResponse.newBuilder().body(responseBody).request(newRequest).build()
DebugLog.i(javaClass.simpleName, "end[${info.negotiatedProtocol}]${info.url}")
eventListener?.callEnd(mCall)
if (responseCallback != null) {

View File

@@ -2,6 +2,7 @@ package io.legado.app.model.localBook
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.net.Uri
import android.text.TextUtils
import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookChapter
@@ -10,6 +11,7 @@ import me.ag2s.epublib.domain.EpubBook
import me.ag2s.epublib.domain.Resource
import me.ag2s.epublib.domain.TOCReference
import me.ag2s.epublib.epub.EpubReader
import me.ag2s.epublib.zip.ZipFile
import org.jsoup.Jsoup
import org.jsoup.nodes.Element
import org.jsoup.select.Elements
@@ -101,9 +103,16 @@ class EpubFile(var book: Book) {
/*重写epub文件解析代码直接读出压缩包文件生成Resources给epublib这样的好处是可以逐一修改某些文件的格式错误*/
private fun readEpub(): EpubBook? {
try {
val bis = LocalBook.getBookInputStream(book)
//通过懒加载读取epub
return EpubReader().readEpub(bis, "utf-8")
val uri = Uri.parse(book.bookUrl)
return if (uri.isContentScheme()) {
//通过懒加载读取epub
EpubReader().readEpubLazy(ZipFile(appCtx, uri), "utf-8")
} else {
val bis = LocalBook.getBookInputStream(book)
EpubReader().readEpub(bis, "utf-8")
}
} catch (e: Exception) {
e.printOnDebug()
}