diff --git a/laws-modules/pom.xml b/laws-modules/pom.xml
index adc703c1..95abc783 100644
--- a/laws-modules/pom.xml
+++ b/laws-modules/pom.xml
@@ -165,10 +165,10 @@
jeuclid-core
3.1.9
-
+
\ No newline at end of file
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 e072b07b..10e24147 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
@@ -26,6 +26,7 @@ import org.apache.shiro.SecurityUtils;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;
import org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObject;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTOfficeArtExtension;
import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture;
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTAnchor;
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;
@@ -154,17 +155,17 @@ public class FileSpiltService {
ZipSecureFile.setMinInflateRatio(-1.0d);
XWPFDocument doc = new XWPFDocument(is);
// 获取文档中的图片
- //List allPictures = doc.getAllPictures();
- //// 遍历图片并处理数学公式
- //for (XWPFPictureData pictureData : allPictures) {
- // String contentType = pictureData.getPackagePart().getContentType();
- // System.out.println(contentType);
- // // 判断图片类型是否为数学公式
- // if (contentType.equals(PictureType.EMF.getExtension())) {
- // // 处理数学公式,你可以在这里添加自己的逻辑
- // System.out.println("Found a math equation!");
- // }
- //}
+ List allPictures = doc.getAllPictures();
+ // 遍历图片并处理数学公式
+ for (XWPFPictureData pictureData : allPictures) {
+ String contentType = pictureData.getPackagePart().getContentType();
+ System.out.println(contentType);
+ // 判断图片类型是否为数学公式
+ if (contentType.equals(PictureType.EMF.getExtension())) {
+ // 处理数学公式,你可以在这里添加自己的逻辑
+ System.out.println("Found a math equation!");
+ }
+ }
//获得序号标题和无标题序号
TitleNumberVO titleNumberVO = AsposeUtil.getNumber(is1);
//TitleNumberVO titleNumberVO = new TitleNumberVO();
@@ -200,16 +201,16 @@ public class FileSpiltService {
CTOMath ctoMath = (CTOMath) child;
//stringBuilder.append(ctoMath.xmlText());
// 处理word中存在的公式成mathML格式
- String imageName = OmmlUtils.convertOmathToPng(ctoMath.xmlText());
- if (messageList.size() > 0) {
- addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, imageName);
- }
+ //String imageName = OmmlUtils.convertOmathToPng(ctoMath.xmlText());
+ //if (messageList.size() > 0) {
+ // addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, imageName);
+ //}
} else if (child instanceof CTOMathPara) {
CTOMathPara ctoMathPara = (CTOMathPara) child;
- String imageName = OmmlUtils.convertOmathToPng(ctoMathPara.xmlText());
- if (messageList.size() > 0) {
- addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, imageName);
- }
+ //String imageName = OmmlUtils.convertOmathToPng(ctoMathPara.xmlText());
+ //if (messageList.size() > 0) {
+ // addItermsMathImage(messageList.get(messageList.size() - 1), itemValList, imageName);
+ //}
}
}
diff --git a/laws-modules/src/main/java/com/jero/modules/split/util/ImageParse.java b/laws-modules/src/main/java/com/jero/modules/split/util/ImageParse.java
index 93951ad0..3457ef17 100644
--- a/laws-modules/src/main/java/com/jero/modules/split/util/ImageParse.java
+++ b/laws-modules/src/main/java/com/jero/modules/split/util/ImageParse.java
@@ -23,13 +23,8 @@ public class ImageParse {
super();
// this.targetDir = targetDir;
}
-
public String parse(byte[] data, String extName) {
- String imageName = UUIDUtils.randomUUID10() + extName;
-
- String filepathandname = filePathCos + "/" + imageName;
- MinioUtil.uploadByte(data, filepathandname);
- return imageName;
+ return parse(new ByteArrayInputStream(data), extName);
}
public String parse(InputStream in, String extName) {
@@ -50,5 +45,17 @@ public class ImageParse {
return filename;
}
+ //public String parse(byte[] data, String extName) {
+ // String imageName = UUIDUtils.randomUUID10() + extName;
+ //
+ // String filepathandname = filePathCos + "/" + imageName;
+ // MinioUtil.uploadByte(data, filepathandname);
+ // return imageName;
+ //}
+
+
+
+
+
}
diff --git a/laws-modules/src/main/java/com/jero/modules/split/util/OmmlUtils.java b/laws-modules/src/main/java/com/jero/modules/split/util/OmmlUtils.java
index 4817c8c7..8dc9036b 100644
--- a/laws-modules/src/main/java/com/jero/modules/split/util/OmmlUtils.java
+++ b/laws-modules/src/main/java/com/jero/modules/split/util/OmmlUtils.java
@@ -3,6 +3,7 @@ package com.jero.modules.split.util;
import net.sourceforge.jeuclid.context.LayoutContextImpl;
import net.sourceforge.jeuclid.context.Parameter;
import net.sourceforge.jeuclid.converter.Converter;
+import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
@@ -18,16 +19,27 @@ import java.net.URL;
*/
public class OmmlUtils {
- public static String convertOmathToPng(String oriMathXmlStr) {
- ImageParse imageParser = new ImageParse();
+ public static void main(String[] args) throws XmlException, UnsupportedEncodingException {
+ String oriMathXmlStr = "fx=a0+n=1∞ancosnπxL+bnsinnπxL";
+ //oriMathXmlStr = new String(oriMathXmlStr.getBytes("gbk"), "utf-8");
+ File file = OmmlUtils.convertOmathToPng(oriMathXmlStr);
+ System.out.printf(file.getName());
+ }
+
+ public static File convertOmathToPng(String oriMathXmlStr) {
Document document = null;
try {
- System.out.println("oriMathXmlStrxxxxxxxxxxxxxxxxxxxxxxx : " + oriMathXmlStr);
XmlObject xmlObject = XmlObject.Factory.parse(oriMathXmlStr);
+ ImageParse imageParser = new ImageParse();
String mathMLStr = getMathMLFromNode(xmlObject.getDomNode());
System.out.println("xxxxxxxxxxxxxxxxxxxxxxx : " + mathMLStr);
document = W3cNodeUtil.xmlStr2Node(mathMLStr, "utf-16");
- return documentToImageHTML(document, imageParser);
+ String imageName = documentToImageHTML(document, imageParser);
+ if (imageName != null) {
+ File tf = new File(imageName);
+ System.out.println("图片是否存在 ======== " + tf.exists() + "Name : " + tf.getName());
+ return tf;
+ }
} catch (Exception e) {
e.printStackTrace();
}
@@ -55,7 +67,6 @@ public class OmmlUtils {
}
StreamSource streamSource = new StreamSource(xslFile);
String s = W3cNodeUtil.node2XmlStr(node);
- //String s = "fx=a0+n=1∞ancosnπxL+bnsinnπxL";
String mathML = W3cNodeUtil.xml2Xml(s, streamSource);
if (mathML != null) {
mathML = mathML.replaceAll("xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\"", "");
@@ -81,5 +92,68 @@ public class OmmlUtils {
return null;
}
+ //public static String convertOmathToPng(String oriMathXmlStr) {
+ // ImageParse imageParser = new ImageParse();
+ // Document document = null;
+ // try {
+ // System.out.println("oriMathXmlStrxxxxxxxxxxxxxxxxxxxxxxx : " + oriMathXmlStr);
+ // XmlObject xmlObject = XmlObject.Factory.parse(oriMathXmlStr);
+ // String mathMLStr = getMathMLFromNode(xmlObject.getDomNode());
+ // System.out.println("xxxxxxxxxxxxxxxxxxxxxxx : " + mathMLStr);
+ // document = W3cNodeUtil.xmlStr2Node(mathMLStr, "utf-16");
+ // return documentToImageHTML(document, imageParser);
+ // } catch (Exception e) {
+ // e.printStackTrace();
+ // }
+ // return null;
+ //}
+ //
+ ///**
+ // * 直接转node有等号会出问题,先转成xml的string,再转成mathML的字符串
+ // *
+ // * @param node
+ // * @return
+ // * @throws IOException
+ // * @throws TransformerException
+ // */
+ //private static String getMathMLFromNode(Node node) throws IOException, TransformerException {
+ // ClassLoader classLoader = OmmlUtils.class.getClassLoader();
+ // URL url = classLoader.getResource("xsl/OMML2MML.XSL");
+ // File xslFile = null;
+ // if (url != null) {
+ // try {
+ // xslFile = new File(url.toURI());
+ // } catch (Exception e) {
+ // e.printStackTrace();
+ // }
+ // }
+ // StreamSource streamSource = new StreamSource(xslFile);
+ // String s = W3cNodeUtil.node2XmlStr(node);
+ // //String s = "fx=a0+n=1∞ancosnπxL+bnsinnπxL";
+ // String mathML = W3cNodeUtil.xml2Xml(s, streamSource);
+ // if (mathML != null) {
+ // mathML = mathML.replaceAll("xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\"", "");
+ // mathML = mathML.replaceAll("xmlns:mml", "xmlns");
+ // mathML = mathML.replaceAll("mml:", "");
+ // }
+ // return mathML;
+ //}
+ //
+ //private static String documentToImageHTML(Document document, ImageParse imageParser) {
+ // try {
+ // Converter mathMLConvert = Converter.getInstance();
+ // LayoutContextImpl localLayoutContextImpl = new LayoutContextImpl(LayoutContextImpl.getDefaultLayoutContext());
+ // localLayoutContextImpl.setParameter(Parameter.MATHSIZE, 50);
+ // ByteArrayOutputStream os = new ByteArrayOutputStream();
+ // mathMLConvert.convert(document, os, "image/png", localLayoutContextImpl);
+ // String pngName = imageParser.parse(os.toByteArray(), ".png");
+ // os.close();
+ // return pngName;
+ // } catch (Exception e) {
+ // e.printStackTrace();
+ // }
+ // return null;
+ //}
+
}
diff --git a/laws-modules/src/main/java/com/jero/modules/split/util/W3cNodeUtil.java b/laws-modules/src/main/java/com/jero/modules/split/util/W3cNodeUtil.java
index 664bb512..cdea5c11 100644
--- a/laws-modules/src/main/java/com/jero/modules/split/util/W3cNodeUtil.java
+++ b/laws-modules/src/main/java/com/jero/modules/split/util/W3cNodeUtil.java
@@ -17,13 +17,6 @@ import java.io.*;
public class W3cNodeUtil {
- public static void main(String[] args) throws XmlException, UnsupportedEncodingException {
- String oriMathXmlStr = "fx=a0+n=1∞ancosnπxL+bnsinnπxL";
- //oriMathXmlStr = new String(oriMathXmlStr.getBytes("gbk"), "utf-8");
- String s = OmmlUtils.convertOmathToPng(oriMathXmlStr);
- System.out.printf(s);
- }
-
public static String node2XmlStr(Node node) {
Transformer transformer = null;
if (node == null) {
@@ -105,16 +98,5 @@ public class W3cNodeUtil {
return null;
}
- public static Node getChildChainNode(Node node, String... nodeName) {
- Node childNode = node;
- for (int i = 0; i < nodeName.length; i++) {
- String tmp = nodeName[i];
- childNode = getChildNode(childNode, tmp);
- if (childNode == null) {
- return null;
- }
- }
- return childNode;
- }
}