11

MathML (または、より好ましくは OMML) を取り、.PNG ファイルを出力するライブラリはありますか?

.docx ファイルのエクスポート プロセスをまとめています。このプロセスの一環として、方程式を抽出して .PNG ファイルとしてレンダリングしたいと考えています。Word 2007 は、Web 用にドキュメントを保存するときにネイティブにこれを行いますが、これまでのところ、これをプログラムで行う方法を見つけることができませんでした (誰かがその答えを持っていれば、さらに良いでしょう)。したがって、次善の策は、OMML を取得し、Microsoft が提供する XSL スタイルシートを使用して、それらを MathML に変換することです。

残念ながら、MathML または OMML 用の (動作する) レンダリング ライブラリを見つけることができませんでした。

このための純粋な .NET ライブラリがない場合は、MathML または OMML から .PNG を出力するためにコマンドラインから呼び出すことができるほぼすべてのライブラリで解決します。

4

6 に答える 6

3

mathml を SVG に変換するSVGMathを試してから、svg を png に変換するツールを試すことができます。

http://harriyott.com/2008/05/converting-svg-images-to-png-in-c.aspx

または、rsvg libを使用して svg を png ファイルに変換します。

于 2010-03-13T05:11:28.863 に答える
2

MathML を PNG に変換するために .NET で多くの人が使用する、Equation Composer と呼ばれる DLL ライブラリを作成します。コマンドライン実行可能ファイルとしても利用できます。無料ではありませんが、テクニカル サポートとバグ修正を受けることができます。詳細はこちら: http://dessci.com/en/products/mathflow/mf_components.htm

于 2010-03-15T17:41:12.947 に答える
1

Java ライブラリ JEuclid を試すことができます: http://jeuclid.sourceforge.net/

于 2010-03-13T06:40:38.807 に答える
1

私にも同様のニーズがあります。ここに私のために働くフラグメントがあります:

public void FormulaToImage(string imageName, string eq)
{
    Application app = new Application();
    Document _doc = app.Documents.Add();
    Range _range = _doc.Range();
    _range.Text = eq; // "Celsius = (5/9)(Fahrenheit – 32)";
    _doc.OMaths.Add(_range);
    _doc.OMaths.BuildUp();
    _doc.SaveAs(@"foo.htm", WdSaveFormat.wdFormatHTML);

    //the gif appears to be better quality than the png
    File.Move(@"foo_files\image002.gif", imageName + ".gif");                
    app.Documents.Close(WdSaveOptions.wdDoNotSaveChanges);
    app.Quit(false);
}
于 2010-05-29T04:51:03.193 に答える
1

いくつかの良いニュース、いくつかのあまり良くないニュース、いくつかの奇妙なニュース:

お探しのライブラリはhttp://msdn.microsoft.com/en-us/library/documentformat.openxml.math%28office.14%29.aspxにあります少なくともそれがあなたが探しているものだと思います。

あまり良いニュースではありませんが、以下のコードは期待どおりに機能しないということです。ほとんどの文字が「?」としてコピーされます。結果の画像はかなりがらくたです。

Sub SaveOMML()
Dim rng As Range
Dim Equation As OMath

Set rng = Selection.Range
rng.Text = "Celsius = (5/9)(Fahrenheit – 32)"
Set rng = Selection.OMaths.Add(rng)
Set Equation = rng.OMaths(1)
Equation.BuildUp
Equation.Range.Select

With Selection.Range
        .CopyAsPicture
        .PasteSpecial DataType:=wdPasteMetafilePicture
End With

End Sub

奇妙なニュースは、OMML画像として PowerPoint にコピー/貼り付けを行い、それを PNG として保存できることです。少し面倒ですが、VSTOで実行できます。

于 2010-03-13T07:20:08.757 に答える
0

Microsoft Word の機能が気に入った場合は、彼らが使用するコードを Decision Science から入手できます... http://dessci.com/ ... すぐに MathFlow 製品を評価しますが、まだ評価していません。 ..そのため、PNG生成がうまく機能することをまだ確認できません。

于 2011-10-01T08:05:17.020 に答える