From 09cac84450aee1c355b15e45d7a3f3cf20fafd10 Mon Sep 17 00:00:00 2001 From: zzs Date: Mon, 13 Jan 2025 16:35:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=90=88=E5=90=8C=E7=AD=BE=E7=AB=A0?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E4=B8=8D=E6=AD=A3=E7=A1=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/wm/utils/ContactSignUtils.java | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/yem/wm/utils/ContactSignUtils.java b/src/main/java/com/yem/wm/utils/ContactSignUtils.java index 5bc78382..6bdc0e0d 100644 --- a/src/main/java/com/yem/wm/utils/ContactSignUtils.java +++ b/src/main/java/com/yem/wm/utils/ContactSignUtils.java @@ -10,8 +10,10 @@ import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.util.Units; import org.apache.poi.xwpf.usermodel.*; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.w3c.dom.Node; import java.io.*; import java.net.URL; @@ -65,9 +67,38 @@ public class ContactSignUtils { String name = bookmark.getName(); if (name.contains(bookmarkName)) { List runs = paragraph.getRuns(); - XWPFRun run; - if (!runs.isEmpty()) { - run = runs.get(0); + XWPFRun run = null; + int idx = 0; +// for (int i = 0; i < runs.size(); i++) { +// String nodeName = runs.get(i).getCTR().getDomNode().getPreviousSibling().getNodeName(); +// if ("w:bookmarkEnd".equals(nodeName) && name.equals(runs.get(i).getCTR().getDomNode().getPreviousSibling().getPreviousSibling().getAttributes().getNamedItem("w:name").getNodeValue())) { +// idx = i - 1; +// break; +// } +// } + //当前分词的上一个分词是不是书签的结尾,如果是就在上一个分词后面插入图片 + for (int i = 0; i < runs.size(); i++) { + Node previousSibling = runs.get(i).getCTR().getDomNode().getPreviousSibling(); + + if (previousSibling != null) { + String nodeName = previousSibling.getNodeName(); + + if ("w:bookmarkEnd".equals(nodeName)) { + Node bookmarkStart = previousSibling.getPreviousSibling(); + + if (bookmarkStart != null) { + Node nameAttribute = bookmarkStart.getAttributes().getNamedItem("w:name"); + + if (nameAttribute != null && name.equals(nameAttribute.getNodeValue())) { + idx = i - 1; + break; + } + } + } + } + } + if (idx >= 0 && idx < runs.size()) { + run = runs.get(idx); } else { run = paragraph.createRun(); }