1

我有一个 MS Word 2013 文档,其中包含我想以编程方式将其转换为图像的数学公式。

我尝试的是:
自 Office 2007 以来,Microsoft 已将数学公式的表示形式更改为 Office MathML ( OMML ) 格式。

  1. 我可以将这个 OMML 格式的公式转换为 MathML 格式。我的Java代码相同:

//得到xslt

StreamSource xlsStreamSource = new StreamSource("D:/TEMP/OMML2MML.XSL");
//Get the document.xml from .docx file

StreamSource xmlStreamSource = new StreamSource("D:/TEMP/word/document.xml");

//Using xalan transformer factory.

TransformerFactory transformerFactory = TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", null);

File pathToHTMLFile = new File("D:/TEMP/Newfolder/word/documentModified.xml");

StreamResult result = new StreamResult(pathToHTMLFile);
Transformer transformer = transformerFactory.newTransformer(xlsStreamSource);
transformer.transform(xmlStreamSource, result);
  1. 现在我将“结果”包含公式转换为 MathML 格式。当我尝试将此公式放入剪贴板以从中获取图像风味时,它被存储为纯 XML 文本,没有可用的图像风味。

//在剪贴板中写入和读取提供的 XMLstring

/**
 * Write to Clipboard.
 * @param s string containing MathML representation
 * @param owner
 */
public static void writeToClipboard(String s, ClipboardOwner owner)
{
   Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
   Transferable transferable = new StringSelection(s);
   clipboard.setContents(transferable, owner);
}



/**
 * Read clipboard data as image
 * @return Image
 * @throws Exception
 */
public static Image getImageFromClipboard() throws Exception 
{
    Transferable transferable = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
    if (transferable != null&& transferable.isDataFlavorSupported(DataFlavor.imageFlavor)) {
        return (Image) transferable.getTransferData(DataFlavor.imageFlavor);
    } else {
        return null;
    }
}

我想将 MathML(XML) 写入剪贴板,以便从中读取图像风味。如何将此 MathML 公式格式写入剪贴板,以便从中获得图像风味?

注意:我不确定我是否朝着正确的方向前进。如果有任何现有的 API 可用,这样做会更容易。

4

0 回答 0