C# 将图像从Enterprise Architect导入ms Word

C# 将图像从Enterprise Architect导入ms Word,c#,.net,import,enterprise-architect,C#,.net,Import,Enterprise Architect,使用EnterpriseArchitect插件时,我想使用c将图像从EnterpriseArchitect导入ms Word。目前,我已经解决了这个问题,将图表/图像保存为.pdf文件,然后使用iTextSharp再次读取。 在我看来,这是解决问题的一条艰难之路,因此我认为必须有一种更简单的方法,使用c将图像从Enterprise Architect获取到ms Word。为什么不直接将图像插入文档中 //create a document generator EA.DocumentGenerat

使用EnterpriseArchitect插件时,我想使用c将图像从EnterpriseArchitect导入ms Word。目前,我已经解决了这个问题,将图表/图像保存为.pdf文件,然后使用iTextSharp再次读取。
在我看来,这是解决问题的一条艰难之路,因此我认为必须有一种更简单的方法,使用c将图像从Enterprise Architect获取到ms Word。

为什么不直接将图像插入文档中

//create a document generator
EA.DocumentGenerator generator;  


//initialize the document generator to create empty document (with no EA template)
generator = Repository.CreateDocumentGenerator();
generator.NewDocument("");

//insert image to the document
generator.DocumentDiagram(diagram.DiagramID, 0, "Diagram Image Template");  

//save the documrnt
generator.SaveDocument(@"path/of/word/document/with/extension", 0);
图表图像模板是您必须通过以下简单步骤在EA中定义自己的模板: 1.单击F8 2.转到“模板”选项卡 3.单击底部的“新建”按钮 4.将新模板命名为“图表图像模板”,然后单击“确定”。将打开新模板的文档。 5.在文档的左侧面板上,选中图表复选框。一些文本将添加到右侧的文档中。 6.在模板文档中,右键单击您看到文本的位置[右键单击以插入图表字段]->插入字段->图表图像。
7.保存模板。

您也可以使用剪贴板功能。这个特殊的代码打开一个新的word文档,从EA中的图表复制图像,并将其粘贴到段落中

public void getPicture(Repository repository)
    {
        Object item;
        ObjectType ot = repository.GetTreeSelectedItem(out item);

        Word.Application wapp = GetWordApp();
        var document = wapp.Documents.Add();
        var paragraph = document.Paragraphs.Add();

        Project project = repository.GetProjectInterface();

        if (ot == ObjectType.otDiagram)
        {
            Diagram d = (Diagram)item;
            project.PutDiagramImageOnClipboard(d.DiagramGUID, 0);
            paragraph.Range.Paste();
        }
    }

        private Word.Application GetWordApp()
    {
        Word.Application wapp = new Word.Application();
        wapp.Visible = true;
        return wapp;
    }

那么,你试过什么了吗?我试着查看接口EA.diagram,看看里面是否有我可以使用的东西。我唯一发现的是SaveAsPDF命令。这是解决问题的一种更简单的方法。但是我知道我在注册时遇到了一个问题:检索CLSID为{ED685310-1B2F-486F-8BD0-8A753DD6054D}的组件的COM类工厂失败,原因是以下错误:80040154类未注册HRESULT异常:0x80040154 REGDB_E_CLASSNOTREG。我尝试将平台目标从任何CPU转换为x86和x64,但这些都没有帮助我。我不理解这个问题。你试过我建议的方法吗?是的,我试过你建议的方法,但我必须分配变量,所以我这样做:EA.DocumentGenerator=new EA.DocumentGenerator;然后我得到了之前发布的错误。你是对的,我忘了发布如何初始化生成器。查看编辑后的代码!快到了!代码正在运行,没有出现任何错误,但是图像在生成的文档中不可见。这可能是因为错误的图像格式或错误的imageID吗?通过进一步调查,让代码窃取剪贴板似乎是一种不好的做法,因为剪贴板应该只在用户区使用。无论如何,最好的解决办法似乎是将图片写入一个临时文件中,您可以从中读取它。