From 9ff09af213ef5fd3bcaa61cc393412beb1e7861f Mon Sep 17 00:00:00 2001 From: lijiarao Date: Thu, 19 Sep 2024 14:21:16 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E8=A1=A8=E6=A0=BC=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E6=B2=A1=E6=9C=89=E6=8B=86=E5=88=86=E5=87=BA?= =?UTF-8?q?=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../split/service/impl/FileSpiltService.java | 94 +++++++++---------- 1 file changed, 46 insertions(+), 48 deletions(-) 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 596db466..0a2eb021 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 @@ -212,40 +212,11 @@ public class FileSpiltService { 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); } } @@ -756,21 +727,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; + return mathPicNameList; } /** @@ -939,6 +920,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); @@ -991,6 +979,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) {