2012-10-05 117 views
1

儘管我使用Doxygen多年,但還有許多其他方法用於創建文檔:PowerPoint文件,Word文件,UML文件。儘管每種文件類型都有其優點(例如,PowerPoint易於創建並且適用於演示文稿),但這會很快導致許多不同的文件,位於不同的位置,並且沒有概述。將Enterprise Architect(UML)文件(和其他文件)轉換爲圖像

我現在想要將所有這些文件合併到一個入口點。我的想法是使用Doxygen生成包含源代碼文檔的HTML文件,並在Doxygen中編寫概述文檔(就像Qt一樣),幷包含基於其他文件的圖像。我也試圖自動化整個系統。

我現在正在尋找的是將這些其他文件轉換爲圖像的方式,因此我的自動系統可以將這些圖像包含在生成的HTML中(最後在生成的QCH(Qt幫助)文件中)。

對於PowerPoint,我找到了一些工具,但我似乎沒有得到免費的工具正常工作,並且我的一些PPTX文件的商業版試用版失敗。

對於Enterprise Architect我沒有找到自動生成圖像的方法。

是否有人知道如何從Enterprise Architect文件和PowerPoint文件自動生成圖像?

回答

3

找到它。

企業架構師有一個Java存檔(eaapi.jar),您可以使用它來訪問Java中的EAP文件。

你需要做的是讓存儲庫,打開文件,並從中獲取所有的頂級包(我省略了所有的錯誤,從這個樣品處理代碼):在

org.sparx.Repository repo = new org.sparx.Repository(); 
org.sparx.Project project = repo.GetProjectInterface(); 
repo.OpenFile(args[0]); 
org.sparx.Collection packages = repo.GetModels(); 

然後循環所有的包和調用自己的方法(因爲你需要遞歸調用自己):

for (short i=0;i<packages.GetCount();i++) 
    { 
    org.sparx.Package pack = (org.sparx.Package)packages.GetAt(i); 
    handlePackage (project, pack, currentdir); 
    } 

則在該方法,遍歷所有圖表和生成的圖像,然後遍歷所有子包遞歸:

public static void handlePackage (org.sparx.Project project, org.sparx.Package pack, String output) 
    { 
    for (org.sparx.Diagram diagram : pack.GetDiagrams()) 
     { 
     project.PutDiagramImageToFile (diagram.GetDiagramGUID(), output + diagram.GetName() + ".png", 1); 
     } 
    for (org.sparx.Package subpack : pack.GetPackages()) 
     { 
     handlePackage(project,subpack,output); 
     } 
    } 

就是這樣。

一些缺陷:

  • 你必須通過一個完全合格的路徑的OpenFile方法。即使該文件位於本地文件夾中,您仍需要傳遞完整路徑。
  • 相同的輸出文件
+1

如果您願意,也有一個.NET API提供相同的功能。 – Uffe

+1

另一個缺陷:EA不要求圖名稱是唯一的。因此,對於編寫的代碼,如果項目中任何位置的兩個圖具有相同的名稱,則第二個圖的文件將覆蓋第一個。爲避免這種情況,請在文件名中包含DiagramID(唯一整數標識)。 – Uffe

+0

感謝您的評論。現在我的Java應用程序正在工作,所以我現在不會將它轉換爲.Net,但很高興知道它存在。 – Patrick

相關問題