How to: Add an Image Part to an Office Open XML Package by Using the Open XML API

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

The Office Open XML Package specification defines a set of XML files that contain the content and define the relationships for all of the document parts stored in a single package. These packages combine the parts that comprise the document files for Microsoft® Office Excel® 2007, Microsoft Office PowerPoint® 2007, and Microsoft Office Word 2007. The Open XML Application Programming Interface (API) allows you to create packages and manipulate the files that comprise the packages. This topic walks through the code and steps to add an image part (file) to an Office Open XML package in Word 2007, although the steps are the same for each of the three 2007 Office system programs that support the Office Open XML Format.

NoteNote

The code samples in this topic are in Microsoft Visual Basic® .NET and Microsoft Visual C#®. You can use them in an add-in created in Microsoft Visual Studio 2008. For more information about how to create an add-in in Visual Studio 2008, see Getting Started with the Open XML Format SDK 1.0.

Adding an Image Part to the Package

In the following code, you add a new image part to an existing WordprocessingDocument package. Paste the following code into the code screen.

' How to add a new image part to a package.
Public Sub AddImagePart(ByVal document As String, ByVal fileName As String)
   Dim wordDoc As WordprocessingDocument = WordprocessingDocument.Open(document, True)
   Dim mainPart As MainDocumentPart = wordDoc.MainDocumentPart
   Dim imagePart As ImagePart = mainPart.AddImagePart(ImagePartType.Jpeg)
   Dim stream As FileStream = New FileStream(fileName, FileMode.Open)
   imagePart.FeedData(stream)
End Sub
// How to add an image part to a package.
public static void AddImagePart(string document, string fileName)
{
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true))
    {
        MainDocumentPart mainPart = wordDoc.MainDocumentPart;

        ImagePart imagePart = mainPart.AddImagePart(ImagePartType.Jpeg);

        using (FileStream stream = new FileStream(fileName, FileMode.Open))
        {
            imagePart.FeedData(stream);
        }
    }
}

To add an image part

  1. First, you pass in parameters representing the path to and the name of the source Word 2007 document as well as the image file.

  2. Then, you open the document as a WordprocessingDocument object.

  3. Next, you create a reference to the MainDocumentPart part and create a new ImagePart.

  4. Finally, you read the contents of the image file as a FileStream and write it to the imagePart part.