code: public NiceXWPFDocument merge(List<NiceXWPFDocument> docMerges, XWPFRun run) throws Exception {
          if (null == docMerges || docMerges.isEmpty() || null == run) return this;
          // XWPFParagraph paragraph = insertNewParagraph(run);
          XWPFParagraph paragraph = (XWPFParagraph) run.getParent();
          CTP ctp = paragraph.getCTP();
  
          CTBody body = this.getDocument().getBody();
          String srcString = body.xmlText();
          String prefix = srcString.substring(0, srcString.indexOf(">") + 1);
          String sufix = srcString.substring(srcString.lastIndexOf("<"));
          List<String> addParts = new ArrayList<String>();
          for (NiceXWPFDocument docMerge : docMerges) {
              addParts.add(extractMergePart(docMerge));
          }
  
          CTP makeBody = CTP.Factory.parse(prefix + StringUtils.join(addParts, "") + sufix);
          ctp.set(makeBody);
  
          String xmlText = body.xmlText();
          xmlText = xmlText.replaceAll("<w:p><w:p>", "<w:p>").replaceAll("<w:p><w:p\\s", "<w:p ")
                  .replaceAll("<w:p><w:tbl>", "<w:tbl>").replaceAll("<w:p><w:tbl\\s", "<w:tbl ");
  
          xmlText = xmlText.replaceAll("</w:sectPr></w:p>", "</w:sectPr>")
                  .replaceAll("</w:p></w:p>", "</w:p>").replaceAll("</w:tbl></w:p>", "</w:tbl>")
                  .replaceAll("<w:p(\\s[A-Za-z0-9:\\s=\"]*)?/></w:p>", "");
  
          // System.out.println(xmlText);
          body.set(CTBody.Factory.parse(xmlText));
  
          return generate();
      }
docs: 指定位置合并Word文档
  
  @param docMerges
  待合并的文档
  @param run
  合并的位置
  @return 合并后的文档
  @throws Exception
  @since 1.3.0