如何使用OpenXml将外部图像添加到Word文档?

时间:2012-09-26 19:53:13

标签: c# openxml

我正在尝试使用C#和Open XML将图像从网址插入到文档中。图像可能会改变,所以我不想下载它,我希望它仍然是一个外部参考。

我发现了几个这样的例子,允许我添加一个本地图像:

http://msdn.microsoft.com/en-us/library/bb497430.aspx

我如何调整它以获取URI?或者还有另一种方法吗?

1 个答案:

答案 0 :(得分:5)

您可以通过快速部件字段将外部图像添加到Word文档。 有关说明,请参阅superuser上的以下答案。

要以编程方式实现所描述的步骤,您必须这样做 使用外部关联来包含来自URL的图像。

以下是完成此任务的步骤:

  1. 创建Picture类的实例。
  2. 添加形状以指定图片的样式(宽度/高度)。
  3. 使用ImageData类指定外部关联的ID。
  4. 在主文档部分添加外部关联。给外部  与您在步骤3中指定的相同ID相关联。
  5. 以下代码仅实现上述步骤。图像被添加到 word文档中的第一段。

    using (WordprocessingDocument newDoc = WordprocessingDocument.Open(@"c:\temp\external_img.docx", true))
    {
        var run = new Run();
    
        var picture = new Picture();
    
        var shape = new Shape() { Id = "_x0000_i1025", Style = "width:453.5pt;height:270.8pt" };
        var imageData = new ImageData() { RelationshipId = "rId56" };
    
        shape.Append(imageData);
    
        picture.Append(shape);
    
        run.Append(picture);
    
        var paragraph = newdoc.MainDocumentPart.Document.Body.Elements<Paragraph>().FirstOrDefault();
    
        paragraph.Append(run);      
    
        newDoc.MainDocumentPart.AddExternalRelationship(
           "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
           new System.Uri("<url to your picture>", System.UriKind.Absolute), "rId56");
    }
    

    在上面的代码中,我省略了定义形状类型的代码。我建议你用一个 像OpenXML SDK productivity tool这样的工具 检查与图像外部关联的文字文件。