diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java index 1c15e6f3..21cb78d8 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java @@ -241,45 +241,14 @@ public class FileSpiltService { if (element instanceof XWPFParagraph) { XWPFParagraph p = (XWPFParagraph) element; StringBuilder stringBuilder = new StringBuilder(); - - ParagraphChildOrderManager runOrMaths = new ParagraphChildOrderManager(p); - List childList = runOrMaths.getChildList(); - for (Object child : childList) { - //if (child instanceof XWPFRun) { - // //处理段落中的文本以及图片 - // handleParagraphRun(content, (XWPFRun) child, imageParser); - //} else - if (child instanceof CTOMath) { - CTOMath ctoMath = (CTOMath) child; - String xmlText = ctoMath.xmlText().replaceAll("xml-fragment","m:oMath"); - Map map = new HashMap<>(); - map.put("encode", xmlText); - String post = HttpRequest.post(mathToImgUrl) - .header(Header.CONTENT_TYPE, "application/json") - .body(xmlText) - .execute().body(); - //String post = HttpUtil.post(mathToImgUrl, map); - if (messageList.size() > 0) { - addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, post); - } - } - else if (child instanceof CTOMathPara) { - CTOMathPara ctoMathPara = (CTOMathPara) child; - String xmlText = ctoMathPara.xmlText().replaceAll("xml-fragment","m:oMath");; - Map map = new HashMap<>(); - map.put("encode",xmlText); - String post = HttpRequest.post(mathToImgUrl) - .header(Header.CONTENT_TYPE, "application/json") - .body(xmlText) - .execute().body(); - //String post = HttpUtil.post(mathToImgUrl, map); - if (messageList.size() > 0) { - addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, post); - } + //读取公式 + if (messageList.size() > 0) { + List mathInParagraph = readMathInParagraph(p); + for (String post : mathInParagraph) { + addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, post); } } - for (XWPFRun xwrun : p.getRuns()) { VerticalAlign subscript = xwrun.getSubscript(); String smalltext = xwrun.getText(0); @@ -753,92 +722,31 @@ public class FileSpiltService { } private List readMathInParagraph(XWPFParagraph paragraph) { - //图片索引List - List imageBundleList = new ArrayList(); - - //段落中所有XWPFRun - List runList = paragraph.getRuns(); - StringBuffer text = new StringBuffer(); - for (XWPFRun run : runList) { - Node runNode = run.getCTR().getDomNode(); - text.append(getText(runNode)); - - String math = getMath(run, runNode); - text.append(math); + //公式图片地址List + List mathPicNameList = new ArrayList<>(); + //获取公式 + ParagraphChildOrderManager runOrMaths = new ParagraphChildOrderManager(paragraph); + List childList = runOrMaths.getChildList(); + for (Object child : childList) { + String xmlText = null; + if (child instanceof CTOMath) { + CTOMath ctoMath = (CTOMath) child; + xmlText = ctoMath.xmlText().replaceAll("xml-fragment","m:oMath"); + } + else if (child instanceof CTOMathPara) { + CTOMathPara ctoMathPara = (CTOMathPara) child; + xmlText = ctoMathPara.xmlText().replaceAll("xml-fragment","m:oMath");; + } + if (xmlText != null){ + //生成图片 + String post = HttpRequest.post(mathToImgUrl) + .header(Header.CONTENT_TYPE, "application/json") + .body(xmlText) + .execute().body(); + mathPicNameList.add(post); + } } - System.out.println("段落内容:".concat(text.toString())); - return imageBundleList; - } - - /** - * 获取字符串 - * - * @param runNode - * @return - */ - private String getText(Node runNode) { - Node textNode = getChildNode(runNode, "w:t"); - if (textNode == null) { - return ""; - } - return textNode.getFirstChild().getNodeValue(); - } - - private String getMath(XWPFRun run, Node runNode) { - Node objectNode = getChildNode(runNode, "m:oMathPara"); - if (objectNode == null) { - return ""; - } - Node shapeNode = getChildNode(objectNode, "v:shape"); - if (shapeNode == null) { - return ""; - } - Node imageNode = getChildNode(shapeNode, "v:imagedata"); - if (imageNode == null) { - return ""; - } - Node binNode = getChildNode(objectNode, "o:OLEObject"); - if (binNode == null) { - return ""; - } - - XWPFDocument word = run.getDocument(); - - NamedNodeMap shapeAttrs = shapeNode.getAttributes(); - // 图片在Word中显示的宽高 - String style = shapeAttrs.getNamedItem("style").getNodeValue(); - System.out.println("图片宽高:".concat(style)); - - System.out.println("--------------"); - - NamedNodeMap imageAttrs = imageNode.getAttributes(); - // 图片在Word中的ID - String imageRid = imageAttrs.getNamedItem("r:id").getNodeValue(); - // 获取图片信息 - PackagePart imgPart = word.getPartById(imageRid); - System.out.println("图片名称".concat(imgPart.getPartName().getName())); - try { - System.out.println(imgPart.getInputStream()); - } catch (IOException e) { - e.printStackTrace(); - } - - System.out.println("--------------"); - - NamedNodeMap binAttrs = binNode.getAttributes(); - // 公式二进制文件在Word中的ID - String binRid = binAttrs.getNamedItem("r:id").getNodeValue(); - // 获取二进制文件 - PackagePart binPart = word.getPartById(binRid); - System.out.println("二进制文件名称:".concat(binPart.getPartName().getName())); - try { - System.out.println(binPart.getInputStream()); - } catch (IOException e) { - e.printStackTrace(); - } - System.out.println("--------------"); - - return "{公式#}"; + return mathPicNameList; } private Node getChildNode(Node node, String nodeName) { @@ -936,6 +844,13 @@ public class FileSpiltService { StringBuilder stringBuilder = new StringBuilder(); List paragraphs = tableCell.getParagraphs(); for (XWPFParagraph paragraph : paragraphs) { + List mathInParagraph = readMathInParagraph(paragraph); + if (CollectionUtils.isNotEmpty(mathInParagraph)) { + String s = addTableMath(mathInParagraph); + stringBuilder.append(s); + continue; + } + List imageBundleList = readImageInParagraph(paragraph); if (CollectionUtils.isNotEmpty(imageBundleList)) { String s = addTableImage(paragraph, imageBundleList); @@ -988,6 +903,16 @@ public class FileSpiltService { itemsValList.add(getSplitItemsValObject(message.getId(), SplitFilePragraTypeEnum.IMG.getValue(), path, message.getItemsCondi().size(), null)); } + public String addTableMath(List imageBundleList){ + StringBuilder stringBuilder = new StringBuilder(); + for (String imageName : imageBundleList) { + String path = splitUrl + imageName; + String imgConVal = ""; + stringBuilder.append(imgConVal); + } + return stringBuilder.toString(); + } + // 像每个条款中依次插入每一段的内容 private void addItermsConditionsImage(SarFileSplitItemsEO message, List itemsValList, XWPFParagraph p, List imageBundleList) { for (String pictureId : imageBundleList) { @@ -1233,41 +1158,11 @@ public class FileSpiltService { XWPFParagraph p = (XWPFParagraph) element; StringBuilder stringBuilder = new StringBuilder(); - - ParagraphChildOrderManager runOrMaths = new ParagraphChildOrderManager((XWPFParagraph) element); - List childList = runOrMaths.getChildList(); - for (Object child : childList) { - //if (child instanceof XWPFRun) { - // //处理段落中的文本以及图片 - // handleParagraphRun(content, (XWPFRun) child, imageParser); - //} else - if (child instanceof CTOMath) { - CTOMath ctoMath = (CTOMath) child; - String xmlText = ctoMath.xmlText().replaceAll("xml-fragment","m:oMath"); - Map map = new HashMap<>(); - map.put("encode", xmlText); - String post = HttpRequest.post(mathToImgUrl) - .header(Header.CONTENT_TYPE, "application/json") - .body(xmlText) - .execute().body(); - //String post = HttpUtil.post(mathToImgUrl, map); - if (messageList.size() > 0) { - addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, post); - } - } - else if (child instanceof CTOMathPara) { - CTOMathPara ctoMathPara = (CTOMathPara) child; - String xmlText = ctoMathPara.xmlText().replaceAll("xml-fragment","m:oMath");; - Map map = new HashMap<>(); - map.put("encode",xmlText); - String post = HttpRequest.post(mathToImgUrl) - .header(Header.CONTENT_TYPE, "application/json") - .body(xmlText) - .execute().body(); - //String post = HttpUtil.post(mathToImgUrl, map); - if (messageList.size() > 0) { - addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, post); - } + //读取公式 + if (messageList.size() > 0) { + List mathInParagraph = readMathInParagraph(p); + for (String post : mathInParagraph) { + addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, post); } }