2009-06-29 26 views
11

Có thư viện nào thực hiện MathML (hay, tốt hơn nữa là OMML) và xuất ra tệp .PNG?MathML hoặc OMML đến PNG w/.NET?

Tôi đang tập hợp một quy trình xuất cho các tệp .docx và, như một phần của quy trình này, tôi muốn trích xuất phương trình và hiển thị chúng dưới dạng tệp .PNG. Word 2007 thực hiện điều này khi bạn lưu một tài liệu cho web, nhưng cho đến nay, tôi đã không thể tìm ra cách để làm điều này theo lập trình (nếu có ai có câu trả lời cho điều đó, nó sẽ còn tốt hơn). Vì vậy, điều tốt nhất tiếp theo là sử dụng OMML và sử dụng các bảng định kiểu XSL do Microsoft cung cấp và chuyển chúng thành MathML.

Thật không may, tôi đã không thể tìm thấy bất kỳ thư viện kết xuất (hoạt động) nào cho MathML hoặc OMML.

Nếu không có bất kỳ thư viện .NET thuần túy nào, tôi sẽ giải quyết mọi thứ mà tôi có thể gọi từ một dòng lệnh để xuất ra tệp .PNG từ MathML hoặc OMML.

+0

chỉ muốn theo dõi xem câu hỏi dưới đây có trả lời câu hỏi của bạn hay không. –

Trả lời

1

Tôi có nhu cầu tương tự. Dưới đây là một đoạn mà làm việc cho tôi:

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); 
} 
1

Một số tin tức sao, một số tin tức không tuyệt vời như vậy và một số tin tức kỳ lạ:

Các ổn tức là thư viện bạn đang muốn tìm ở http://msdn.microsoft.com/en-us/library/documentformat.openxml.math%28office.14%29.aspx. Ít nhất đó là những gì tôi nghĩ rằng bạn đang tìm kiếm.

không quá lớn tin tức là mã bên dưới không chính xác hoạt động như được hy vọng - nó sao chép hầu hết các ký tự là "?" và hình ảnh kết quả là khá nhiều crap.

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 

Các lạ tức là OMML không sao chép/dán vào PowerPoint tốt như một hình ảnh, mà sau đó có thể được lưu như một PNG. Tại ít cồng kềnh, nhưng nó có thể được thực hiện với VSTO.

+0

Sao chép/Dán có thể không hoạt động tốt nhưng tiết kiệm khi tạo kết quả tốt đẹp cho tôi –

2

Chúng tôi tạo một thư viện DLL được gọi là Trình soạn nhạc phương trình mà nhiều người dùng với .NET để chuyển đổi MathML thành PNG. Nó cũng có sẵn như là một dòng lệnh thực thi. Nó không phải là miễn phí, nhưng điều đó có nghĩa là bạn nhận được hỗ trợ kỹ thuật và sửa lỗi. Thông tin thêm có sẵn tại đây: http://dessci.com/en/products/mathflow/mf_components.htm

0

Nếu bạn thích những gì Microsoft Word không, mã họ sử dụng để làm điều đó là có sẵn từ Quyết định Khoa học ... http://dessci.com/ ... Tôi sẽ đánh giá sản phẩm của họ MathFlow chẳng bao lâu ... nhưng tôi chưa thể xác minh rằng thế hệ PNG hoạt động tốt.

Các vấn đề liên quan