Java - How to Insert, Replace, Remove or Extract Images in PDF
Tags: java, pdf, image, insert
Published: 2022-04-21 03:59:16

Compared with text, images are usually easier to convey meaning and can make your PDF documents more appealing. Since images play an important role in PDF, knowing how to **insert, replace, remove, or extract images from PDF** can be a real benefit for every developer. This article will show you how accomplish these tasks in Java by using [Free Spire.PDF for Java](https://www.e-iceblue.com/Introduce/free-pdf-for-java.html).

- [Insert an Image to PDF at a Specified Location](#insert-an-image-to-pdf-at-a-specified-location)
- [Replace an Image in PDF with Another Image](#replace-an-image-in-pdf-with-another-image)
- [Remove a Specified Image in PDF](#remove-a-specified-image-in-pdf)
- [Extract images from PDF](#extract-images-from-pdf)

##Add Spire.Pdf.jar as dependency
If you are working on a maven project, you can include the dependency in pom.xml file using this:
```java
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>
```
If you are not using maven, then you can find the required jar files from the zip file available in [this location](https://www.e-iceblue.com/Download/pdf-for-java-free.html). Include all the jar files into the application lib folder to run the sample code given in this tutorial.
##Insert an Image to PDF at a Specified Location
The drawImage() method is used to draw an image with a specified width and height at a specified position on a PDF page. Therefore, you do not need to resize images in advance before drawing. The following are the main steps to insert an image to a new PDF document in Java.

- Create a **PdfDocument** object.
- Add a page to PDF using **PdfDocument.getPages().add()** method.
- Load an image using **PdfImage.fromFile()** method.
- Specify the image size and position in the page.
- Draw the image on the page using **PdfPageBase.getCanvas.drawImage()** method.
- Save the document to a PDF file.

```java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;

public class InsertImage {

    public static void main(String[] args) {

        //Create a PdfDocument object
        PdfDocument doc = new PdfDocument();

        //Set page margins
        doc.getPageSettings().setMargins(30);

        //Add a page
        PdfPageBase page = doc.getPages().add();

        //Load an image from path
        PdfImage image = PdfImage.fromFile("C:\\Users\\Administrator\\Desktop\\java-logo.jpg");

        //Specify the image width and height in PDF
        float width = image.getWidth() * 0.5f;
        float height = image.getHeight() * 0.5f;

        //Specify a position to draw image
        double x = 0f;
        float y = 0f;

        //Draw image on page canvas
        page.getCanvas().drawImage(image, x, y, width, height);

        //Save the document
        doc.saveToFile("output/InsertImage.pdf", FileFormat.PDF);
    }
}
```

![InsertImage](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nr9cstpziv0cuaga13d1.png)

##Replace an Image in PDF with Another Image
To replace an image in PDF, use replaceImage() method. This method will automatically resize the new image replaced in so that it does affect the readability of other elements surrounded. The following are the steps.

- Create a **PdfDocument** object.
- Load an existing PDF document using **PdfDocument.loadFromFile()** method.
- Get a specific page using **PdfDocument.getPages().get()** method.
- Load an image using **PdfImage.fromFile()** method.
- Replace a specific image in the document with the new image using **PdfDocument.replaceImage()** method.
- Save the document to a PDF file.

```java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;

public class ReplaceImage {
    public static void main(String[] args) {

        //Load the PDF file
        PdfDocument doc = new PdfDocument();
        doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Java-Programming.pdf");

        //Get the first page
        PdfPageBase page = doc.getPages().get(0);

        //Load an image
        PdfImage image = PdfImage.fromFile("C:\\Users\\Administrator\\Desktop\\java-logo.png");

        //Replace the first image in the first page with the loaded image
        page.replaceImage(0, image);

        //Save the file
        doc.saveToFile("output/ReplaceImage.pdf", FileFormat.PDF);
    }
}
```

![replaceImage](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5fnj2jipyt3zknd1rh7.png)

##Remove a Specified Image in PDF
An image in a PDF document can be easily removed by using deleteImage() method. Here come the steps.

- Create a **PdfDocument **object.
- Load an existing PDF document using **PdfDocument.loadFromFile()** method.
- Get a specific page using **PdfDocument.getPages().get()** method.
- Delete a particular image by its index using **PdfPageBase.deleteImage(int imageIndex)** method.
- Save the document to a PDF file.

```java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;

public class RemoveImage {
    public static void main(String[] args) {

        //Create a PdfDocument object
        PdfDocument doc = new PdfDocument();

        //Load the sample PDF file
        doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Java-Programming.pdf");

        //Get the specified page
        PdfPageBase page = doc.getPages().get(0);

        //Delete a particular image by its index
        page.deleteImage(0);

        //Save the file
        doc.saveToFile("output/DeleteImage.pdf", FileFormat.PDF);
    }
}
```

![RemoveImage](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jr78xndcc34gri6pe7k7.png)
##Extract Images from PDF
Images of a PDF page can be extracted by using extractImages() method. The following are the steps to extract all images from a PDF document using Free Spire.PDF.

- Create a **PdfDocument** object.
- Load an existing PDF document using **PdfDocument.loadFromFile()** method.
- Get a specific page using **PdfDocument.getPages().get()** method.
- Loop through all the pages in the document, and use **PdfPageBase.extractImages()** method to extract images from a specific page.
- Save the images in a local folder as .png files.

```java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class ExtractImages {

    public static void main(String[] args) throws IOException {

        //Create a PdfDocument instance
        PdfDocument doc = new PdfDocument();

        //Load a PDF sample file
        doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Java-Programming.pdf");

        //Declare an int variable
        int index = 0;

        //Loop through all pages
        for (Object page : doc.getPages()) {

             PdfPageBase pageBase = (PdfPageBase) page;

            //Extract images from the given page
            for (BufferedImage image : pageBase.extractImages()) {

                //Specify the file path and name
                File output = new File("C:\\Users\\Administrator\\Desktop\\ExtractedImages\\" + String.format("Image_%d.png", index++));

                //Save images as .png files
                ImageIO.write(image, "PNG", output);
            }
        }
    }
}
```

![ExtractImage](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xnl91nvf8ndb2z42ppgl.png)