In this blog, I will show you how to add, replace and delete images in a PDF document in Java using Free Spire.PDF for Java library.
Dependencies
First of all, you need to add needed dependencies for including Free Spire.PDF for Java into your Java project. There are two ways to do that.
If you use maven, you need to add the following code to your project’s pom.xml file.
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf.free</artifactId>
<version>2.6.3</version>
</dependency>
</dependencies>
For non-maven projects, download Free Spire.PDF for Java pack from this websiteand add Spire.Pdf.jar in the lib folder into your project as a dependency.
Add an Image
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;
public class AddImage {
public static void main(String[] args){
//Create a PdfDocument instance
PdfDocument doc = new PdfDocument();
//Add one page
PdfPageBase page = doc.getPages().add();
//Draw image to the page
PdfImage image = PdfImage.fromFile("Hydrangeas.jpg");
float width = image.getWidth() * 0.5f;
float height = image.getHeight() * 0.5f;
double x = (page.getCanvas().getClientSize().getWidth() - width) / 2;
page.getCanvas().drawImage(image, (int)x, 60, width, height);
//Save the document
doc.saveToFile("addImage.pdf");
doc.close();
}
}
Replace an Image
When replacing an image, you can choose to replace it with a new image or with text.
The following example shows how to replace an image with new image.
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;
public class ReplaceWithNewImage {
public static void main(String[] args){
//Create a PdfDocument instance
PdfDocument doc = new PdfDocument();
//Load a PDF file
doc.loadFromFile("addImage.pdf");
//Get the first page
PdfPageBase page = doc.getPages().get(0);
//Load an image
PdfImage image = PdfImage.fromFile("chartImage.png");
//Replace the first image in the first page with the new image
page.replaceImage(0, image);
//Save the document
doc.saveToFile("replaceImageWithNewImage.pdf", FileFormat.PDF);
}
}
Replacing an image with text is a little bit complicate than replacing with image. You first need to find the position of the image, delete that image and then draw text to the position where the image was located.
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.exporting.PdfImageInfo;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
public class ReplaceWithText {
public static void main(String[] args){
//Create a PdfDocument instance
PdfDocument doc = new PdfDocument();
//Load a PDF file
doc.loadFromFile("addImage.pdf");
//Get the first page
PdfPageBase page = doc.getPages().get(0);
//Get images in the first page
PdfImageInfo[] imageInfo = page.getImagesInfo();
//Get width and height of the first image
float widthInPixel = imageInfo[0].getImage().getWidth();
float heightInPixel = imageInfo[0].getImage().getHeight();
//Convert unit from Pixel to Point
PdfUnitConvertor convertor = new PdfUnitConvertor();
float width = convertor.convertUnits(widthInPixel, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);
float height = convertor.convertUnits(heightInPixel, PdfGraphicsUnit.Pixel,PdfGraphicsUnit.Point);
//Get location of the image
float xPos=(float) imageInfo[0].getBounds().getX();
float yPos=(float)imageInfo[0].getBounds().getY();
//Remove the image
page.deleteImage(0);
//Define a rectangle
Dimension2D dimension2D = new Dimension();
dimension2D.setSize(width, height);
Rectangle2D rect = new Rectangle2D.Float();
rect.setFrame(new Point2D.Float(xPos, yPos), dimension2D);
//Define string format
PdfStringFormat format=new PdfStringFormat();
format.setAlignment(PdfTextAlignment.Left);
//format.setLineAlignment(PdfVerticalAlignment.Middle);
//Draw a string at the location of the image
page.getCanvas().drawString("Replace Text", new PdfFont(PdfFontFamily.Helvetica, 18f), PdfBrushes.getDeepSkyBlue(), rect, format);
//Save the document
doc.saveToFile("replaceImageWithText.pdf", FileFormat.PDF);
}
}
Delete an Image
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
public class DeleteImage {
public static void main(String[] args){
//Create a PdfDocument instance
PdfDocument pdf = new PdfDocument();
//Load a PDF file
pdf.loadFromFile("addImage.pdf");
//Get the first page
PdfPageBase page = pdf.getPages().get(0);
//Delete the first image in the page
page.deleteImage(0);
//Save the document
pdf.saveToFile("deleteImage.pdf");
}
}
Comments
Post a Comment