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