Click here to Skip to main content
6,305,776 members and growing! (15,184 online)
Email Password   helpLost your password?
Enterprise Systems » Office Development » Microsoft Word     Intermediate License: The Code Project Open License (CPOL)

Adding An Image to a Word Document Programmatically (Microsoft Office 2007)

By Abey Thomas

This article is about the details of adding an image to a Word document programmatically.
XML, C# 2.0, C# 3.0, Office, .NET 2.0, .NET 3.0, COM+, VS2008, Dev, Design
Posted:6 Oct 2008
Views:7,417
Bookmarked:7 times
Announcements
Loading...
 
Search    
Advanced Search
printPrint   Broken Article?Report       add Share
  Discuss Discuss   Recommend Article Email
4 votes for this article.
Popularity: 1.73 Rating: 2.88 out of 5
1 vote, 25.0%
1

2

3
1 vote, 25.0%
4
2 votes, 50.0%
5

Introduction

This article is about the details of adding an image to a Word document programmatically.

Background

Let us assume a sample document which contains an image placeholder with some tag value. For those who know how to add an image placeholder to a Word document, they can skip the next portion, and directly look at the implementation details.

How To Add an Image Placeholder to a Word Document

  • Open a Word document.
  • Go to the 'Developer' tab.
  • Click on the icon which says "Picture Content Control".
  • Once the icon is clicked, an image placeholder is added to the Word document. Select the placeholder, and click "properties" button next to the icon.
    This will open up the window "Content Control Properties".
  • Add a title and the tag name value. The tag name of the image place holder used in this article source code is ImagePlaceHolder1.
  • Now save the document and then close it.
    We now have a document with an image placeholder.

I have uploaded a sample Word document with all this done. It can be found in the DocxImages\DocxImages\SampleTemplate folder.

Now this is just a place holder. Our requirement is to embed an image (of our choice) at run time to this place holder. The remaining part of the article deals with this issue.

Embedding an Image to a Placeholder on the Fly

Now we have the template Word document. Assume that we have an image file already. For the sake of simplicity, I am assuming a static image file which is already available with me. In real time scenarios, it can be dynamically created images like charts, etc.

I have placed both the template and the sample image in the programs bin/debug folder.

Before going into the implementation details, let me give you some fundamentals.

  • In the Word 2007 archive, there is a folder media where all the image files are stored.
  • Also, every image is described by a relationship id. This number along with the image path is described in the file word\_rels\document.xml.rels.
  • The main document XML file, i.e. document.xml will contain a node "" which describes the image placeholder. The relationship id will be referred in this node.

Implementation Details

With what is said above, embedding an image on the fly is a very easy process. It can be summarized in three points:

  1. Find the Image tag node: This node is described in the document.xml by node. The document.xml should be searched for this node with tag name using XPathNodeIterator.
  2. Find the relationship id of the image node: Once the image placeholder node is identified, the relationship id of this node should be identified. The relationship id is found as a part of the node attribute.
  3. The image referred to by the relationship id should be replaced by our new image: Once the image relationship id is found, the corresponding image in the media folder should be replaced with our new image.

The source code of the whole process is uploaded with this article and can be found here. Put the sample template document and the sample image in the bin/debug folder of the program, and execute it.

History

  • 6th October, 2008: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Abey Thomas


Member
I am Abey Thomas Raju from Bangalore, India.
Occupation: Software Developer (Senior)
Company: AdviceAmerica Software Pvt Ltd
Location: India India

Other popular Office Development articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 3 of 3 (Total in Forum: 3) (Refresh)FirstPrevNext
GeneralThank you for your contribution PinmemberElsaWood4:49 15 Jun '09  
GeneralHow to open the developer tab? PinmemberRicardo Amores Hernández23:41 6 Oct '08  
GeneralRe: How to open the developer tab? PinmemberAbey Thomas0:28 7 Oct '08  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 6 Oct 2008
Editor: Deeksha Shenoy
Copyright 2008 by Abey Thomas
Everything else Copyright © CodeProject, 1999-2009
Web18 | Advertise on the Code Project