1

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

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

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

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

对于 Enterprise Architect,我没有找到自动生成图像的方法。

有人知道如何从 Enterprise Architect 文件和 PowerPoint 文件自动生成图像吗?

4

1 回答 1

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 方法。即使文件在您的本地文件夹中,您仍然必须传递完整路径。
  • 输出文件相同
于 2012-10-05T13:51:53.467 回答