Skip to main content

Replace Image in Word in Java



In this article, I will introduce how to replace an image with a new image and how to replace an image with text in a Word document programmatically in Java.

The required library:


The example Word document:

Imported namespace:

import com.spire.doc.Document;
import com.spire.doc.DocumentObject;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange;
 
Replace image with new image

//load Word document
Document doc = new Document();
doc.loadFromFile(
"Images.docx");

//get the first section
Section section = doc.getSections().get(0);

//loop through the paragraphs in the section
for (int i=0;i< section.getParagraphs().getCount();i++)
{
    Paragraph para=section.getParagraphs().get(i);
    //loop through the child objects in the paragraph
    for (int j=0;j<para.getChildObjects().getCount();j++)
    {
        DocumentObject obj =para.getChildObjects().get(j);
          //find the image
        if(obj instanceof DocPicture){
              //replace the image with a new image
            DocPicture pic = (DocPicture)obj;
            pic.loadImage("Hydrangeas.jpg");
        }
    }
}

//save the resultant document
doc.saveToFile("ReplaceWithImage.docx", FileFormat.Docx_2013);
 
Replace image with text
//load Word document
Document doc = new Document();
doc.loadFromFile("Images.docx");

//get the first section
Section section = doc.getSections().get(0);

//loop through the paragraphs in the section
for (int i=0;i< section.getParagraphs().getCount();i++)
{
    Paragraph para=section.getParagraphs().get(i);
    //loop through the child objects in the paragraph
    for (int j=0;j<para.getChildObjects().getCount();j++)
    {
        DocumentObject obj =para.getChildObjects().get(j);
          //find the image
        if(obj instanceof DocPicture){
        //replace the image with text
            DocPicture pic = (DocPicture)obj;
            TextRange text = new TextRange(doc);
            text.setText("Text");
            int index = para.getIndex(pic);
            para.getChildObjects().insert(index, text);
            para.getChildObjects().remove(pic);
        }
    }
}

//save the resultant document
doc.saveToFile("ReplaceWithText.docx", FileFormat.Docx_2013);


Comments