4

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

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

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

我该如何调整它以获取 URI?还是完全有另一种方法?

4

1 回答 1

6

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

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

以下是完成此操作的步骤:

  1. 创建图片类的实例。
  2. 添加一个形状来指定图片的样式(宽度/高度)。
  3. 使用 ImageData 类来指定外部关系的 ID。
  4. 向主文档部分添加外部关系。为外部关系提供您在步骤 3 中指定的相同 ID。

以下代码只是实现了上述步骤。图像被添加到 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 生产力工具之类的工具 来检查与图像有外部关系的 Word 文档。

于 2012-09-30T17:47:14.780 回答