How can I add an external image to a word document using OpenXml?

落爺英雄遲暮 提交于 2019-12-10 19:19:36

问题


I am trying to use C# and Open XML to insert an image from a url into a doc. The image may change so I don't want to download it, I want it to remain an external reference.

I've found several examples like this one that allow me to add a local image:

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

How can I adapt that to take a URI? Or is there another approach altogether?


回答1:


You can add an external image to an word document via a quick parts field. For a description please see the following answer on superuser.

To realize the described steps programmatically you have to use an external releationship to include an image from an URL.

Here are the steps to accomplish this:

  1. Create an instance of the Picture class.
  2. Add a Shape to specify the style of the picture (width/height).
  3. Use the ImageData class to specify the ID of the external releationship.
  4. Add an external releationship to the main document part. Give the external releationship the same ID you specified in step 3.

The following code just implements the steps described above. The image is added to the first paragraph in the word document.

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");
}

In the code above I've omitted the code to define the shape type. I advise you to use a tool like the OpenXML SDK productivity tool to inspect a word document with an external releationship to an image.



来源:https://stackoverflow.com/questions/12609367/how-can-i-add-an-external-image-to-a-word-document-using-openxml

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!