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(); }