From e293a68dfbe169a8e1a1de6c3d1b8113d1a30687 Mon Sep 17 00:00:00 2001
From: Xwite <82232510+Xwite@users.noreply.github.com>
Date: Fri, 3 Feb 2023 19:27:17 +0800
Subject: [PATCH] =?UTF-8?q?fix(epubFile):=20=E4=BF=AE=E5=A4=8D=E7=89=B9?=
=?UTF-8?q?=E5=AE=9A=E6=83=85=E5=86=B5=E4=B8=8B=E7=AB=A0=E8=8A=82=E5=86=85?=
=?UTF-8?q?=E5=AE=B9=E5=88=86=E5=89=B2=E9=94=99=E8=AF=AF=E7=9A=84bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
...
...
closes #2755
---
.../io/legado/app/model/localBook/EpubFile.kt | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt b/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt
index 2e0ef3b01..2d7dfc103 100644
--- a/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt
+++ b/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt
@@ -190,17 +190,24 @@ class EpubFile(var book: Book) {
}
private fun getBody(res: Resource, startFragmentId: String?, endFragmentId: String?): Element {
- val doc = Jsoup.parse(String(res.data, mCharset))
- val body = doc.body()
+ val originHtml = String(res.data, mCharset)
+ var html = originHtml
+ var doc = Jsoup.parse(html)
+ var body = doc.body()
if (!startFragmentId.isNullOrBlank()) {
- body.getElementById(startFragmentId)?.previousElementSiblings()?.remove()
+ body.getElementById(startFragmentId)?.outerHtml()?.let {
+ html = html.substringAfter(it)
+ }
}
if (!endFragmentId.isNullOrBlank() && endFragmentId != startFragmentId) {
- body.getElementById(endFragmentId)?.run {
- nextElementSiblings().remove()
- remove()
+ body.getElementById(endFragmentId)?.outerHtml()?.let {
+ html = html.substringBefore(it)
}
}
+ if (html == originHtml) {
+ doc = Jsoup.parse(html)
+ body = doc.body()
+ }
/*选择去除正文中的H标签,部分书籍标题与阅读标题重复待优化*/
val tag = Book.hTag
if (book.getDelTag(tag)) {