fix(epubFile): 修复特定情况下章节内容分割错误的bug

<h2><a id="secoo1">标题1</a></h2>
  ...
<h2><a id="secoo2">标题2</a></h2>
...

closes #2755
This commit is contained in:
Xwite
2023-02-03 19:27:17 +08:00
committed by GitHub
parent d567919fb1
commit e293a68dfb
@@ -190,17 +190,24 @@ class EpubFile(var book: Book) {
} }
private fun getBody(res: Resource, startFragmentId: String?, endFragmentId: String?): Element { private fun getBody(res: Resource, startFragmentId: String?, endFragmentId: String?): Element {
val doc = Jsoup.parse(String(res.data, mCharset)) val originHtml = String(res.data, mCharset)
val body = doc.body() var html = originHtml
var doc = Jsoup.parse(html)
var body = doc.body()
if (!startFragmentId.isNullOrBlank()) { if (!startFragmentId.isNullOrBlank()) {
body.getElementById(startFragmentId)?.previousElementSiblings()?.remove() body.getElementById(startFragmentId)?.outerHtml()?.let {
html = html.substringAfter(it)
}
} }
if (!endFragmentId.isNullOrBlank() && endFragmentId != startFragmentId) { if (!endFragmentId.isNullOrBlank() && endFragmentId != startFragmentId) {
body.getElementById(endFragmentId)?.run { body.getElementById(endFragmentId)?.outerHtml()?.let {
nextElementSiblings().remove() html = html.substringBefore(it)
remove()
} }
} }
if (html == originHtml) {
doc = Jsoup.parse(html)
body = doc.body()
}
/*选择去除正文中的H标签,部分书籍标题与阅读标题重复待优化*/ /*选择去除正文中的H标签,部分书籍标题与阅读标题重复待优化*/
val tag = Book.hTag val tag = Book.hTag
if (book.getDelTag(tag)) { if (book.getDelTag(tag)) {