Manipulating Embedded Objects with Apache POI

Apache POI is a powerful Java library that allows you to work with Microsoft Office documents. In this tutorial, we will focus on manipulating embedded objects within documents using Apache POI. Manipulating embedded objects involves performing operations such as resizing, repositioning, or deleting the embedded objects.

Example Code

Before we delve into the details, let's take a look at a simple example of how to manipulate embedded objects using Apache POI:

import org.apache.poi.xslf.usermodel.*;

public class ManipulatingEmbeddedObjectsExample {
  public static void main(String[] args) throws Exception {
    XMLSlideShow ppt = new XMLSlideShow();
    XSLFSlide slide = ppt.createSlide();
    // Embedding an image
    XSLFPictureData pictureData = ppt.addPicture(new FileInputStream("image.jpg"), PictureData.PictureType.JPEG);
    XSLFPictureShape pictureShape = slide.createPicture(pictureData);
    // Manipulating the embedded image
    pictureShape.setAnchor(new Rectangle2D.Double(100, 100, 200, 200));
    ppt.write(new FileOutputStream("output.pptx"));

Step-by-Step Tutorial

  1. Create an instance of the XMLSlideShow class, which represents a PowerPoint presentation.
  2. Create a slide using the createSlide() method.
  3. Embed an object, such as an image, by adding the object's data to the document and creating a corresponding shape.
  4. Access the embedded object's shape and manipulate its properties, such as anchor position, size, rotation, or other attributes, using the provided methods.
  5. Save the modified presentation to a file using the write() method.

Common Mistakes

  • Not correctly referencing the embedded object's shape when trying to manipulate it, resulting in errors or unexpected behavior.
  • Forgetting to save the modified document to a file after performing the desired manipulations, leading to no changes in the output file.
  • Applying incorrect or incompatible transformations to the embedded object, causing distortion or loss of data.
  • Not properly handling exceptions when working with embedded objects, which may lead to program crashes or undesired outcomes.

Frequently Asked Questions (FAQs)

  1. Can I modify the content of an embedded object using Apache POI?

    No, Apache POI primarily focuses on manipulating the properties and appearance of embedded objects, such as resizing or repositioning. Modifying the actual content of the embedded object, such as editing text within an embedded Word document, may require using other libraries or tools specific to that file format.

  2. Is it possible to delete an embedded object using Apache POI?

    Yes, you can delete an embedded object by removing its corresponding shape from the document using the provided methods in Apache POI.

  3. Can I add additional effects, such as animations or transitions, to embedded objects using Apache POI?

    No, Apache POI focuses on the manipulation of embedded objects at a static level, without providing direct support for animations or transitions. For adding such effects, you may need to use other libraries or tools that support the specific file format and desired effects.

  4. Can I extract an embedded object, modify it externally, and then re-insert it using Apache POI?

    Yes, you can extract an embedded object using Apache POI, save it to a separate file, make modifications externally, and then re-insert the modified object back into the document using Apache POI.

  5. Can I manipulate embedded objects in different file formats, such as Excel or Word, using Apache POI?

    Yes, Apache POI provides support for manipulating embedded objects in various file formats, including Excel, Word, and PowerPoint, depending on the specific Apache POI components and classes designed for each file format.


In this tutorial, we have explored how to manipulate embedded objects using Apache POI. We provided example code, explained the steps involved, highlighted common mistakes, and answered frequently asked questions. With this knowledge, you can now programmatically resize, reposition, or delete embedded objects within documents using Apache POI, empowering you to customize and enhance the appearance of your Office documents.