首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将企业架构师(UML)文件(和其他文件)转换为图像

将企业架构师(UML)文件(和其他文件)转换为图像
EN

Stack Overflow用户
提问于 2012-10-05 16:38:25
回答 1查看 672关注 0票数 1

虽然我使用Doxygen已经有几年了,但是还有很多其他的方法可以用来创建文档: PowerPoint文件、Word文件、UML文件。虽然每种文件类型都有自己的优点(例如,PowerPoint易于创建,非常适合演示文稿),但这很快就会导致在不同的位置有许多不同的文件,并且没有概述。

现在我想将所有这些文件合并到一个入口点。我的想法是使用Doxygen生成包含源代码文档的HTML文件,用Doxygen编写概述文档(就像Qt所做的那样),并包含基于其他文件的图像。我也在尝试使整个系统自动化。

我现在正在寻找的是一种将这些其他文件转换为图像的方法,这样我的自动系统就可以将这些图像包含在生成的HTML中(最终包含在生成的QCH (Qt帮助)文件中)。

对于PowerPoint,我找到了一些工具,但我似乎不能让免费的工具正常工作,商业版的试用版在我的一些PPTX文件上失败了。

对于企业架构师,我没有找到一种自动生成图像的方法。

有人知道如何从企业架构师文件和PowerPoint文件自动生成图像吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-05 21:51:53

找到了。

Enterprise architect有一个Java Archive (eaapi.jar),您可以使用它来访问Java中的EAP文件。

您需要做的是获取存储库,打开文件并从中获取所有顶级包(我在此示例中省略了所有错误处理代码):

代码语言:javascript
复制
org.sparx.Repository repo = new org.sparx.Repository();
org.sparx.Project project = repo.GetProjectInterface();
repo.OpenFile(args[0]);
org.sparx.Collection packages = repo.GetModels();

然后循环所有包并调用您自己的方法(因为您将需要递归地调用自己):

代码语言:javascript
复制
for (short i=0;i<packages.GetCount();i++)
   {
   org.sparx.Package pack = (org.sparx.Package)packages.GetAt(i);
   handlePackage (project, pack, currentdir);
   }

然后在该方法中,循环遍历所有图表并生成图像,并递归地循环遍历所有子包:

代码语言:javascript
复制
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方法。即使文件位于本地文件夹中,也必须传递完整路径。
  • 输出文件

相同

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12742547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档