feat: bookmark replace

This commit is contained in:
zzs 2025-03-07 15:05:12 +08:00
parent 3168c49e1a
commit 7d0bbcc052
2 changed files with 18 additions and 3 deletions

View File

@ -17,6 +17,7 @@ import org.w3c.dom.Node;
import java.awt.print.Book;
import java.io.*;
import java.math.BigInteger;
import java.util.*;
import java.util.stream.Collectors;
@ -115,6 +116,11 @@ public class BookmarkExec {
queryBookmarkIdx(paragraph, info);
}
BigInteger numID = paragraph.getNumID();
if (numID != null) {
}
return new ArrayList<>(set);
}
@ -129,10 +135,15 @@ public class BookmarkExec {
CTR ctr = run.getCTR();
Node node = ctr.getDomNode();
Node currentNode = node.getPreviousSibling();
int idx = runs.indexOf(run);
// 递归查找前一个兄弟节点
while (currentNode != null) {
String nodeName = currentNode.getNodeName();
if (MARK_RUN.equals(nodeName)) {
// 跨run跳过
break;
}
if (BOOKMARK_START.equals(nodeName)) {
NamedNodeMap attrs = currentNode.getAttributes();
Node idNode = attrs.getNamedItem(ATTR_BOOKMARK_ID);
@ -140,7 +151,7 @@ public class BookmarkExec {
// 匹配书签ID或名称
if (id.equals(info.getBookmarkId())) {
info.setStartIdx(idx); // 记录当前Run的索引为起始位置
info.setStartIdx(i); // 记录当前Run的索引为起始位置
foundStart = true;
break;
}
@ -151,7 +162,7 @@ public class BookmarkExec {
// 匹配书签ID
if (id.equals(info.getBookmarkId())) {
info.setEndIdx(idx); // 记录当前Run的索引为结束位置
info.setEndIdx(i); // 记录当前Run的索引为结束位置
foundEnd = true;
break;
}

View File

@ -15,12 +15,16 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class BookmarkInfo {
// 书签名称
private String bookmarkName;
// 书签id
private String bookmarkId;
// 起始run idx
private int startIdx;
// 中止run idx
private int endIdx;
public BookmarkInfo(String bookmarkName, String bookmarkId) {