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 website
and 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