iText - Rotating an Image



In this chapter, we will see how to insert an image in a PDF document and how to rotate that image, using the functions available in the iText library.

Rotating an Image in a PDF

You can create an empty PDF Document by instantiating the Document class. While instantiating this class, you need to pass a PdfDocument object as a parameter to its constructor.

To add image to the PDF, create an object of the image that is required to be added and add it using the add() method of the Document class. You can rotate an image using the setRotationAngle() method.

Following are the steps to rotate an image in a PDF document.

Step 1: Creating a PdfWriter object

The PdfWriter class represents the DocWriter for a PDF. This class belongs to the package com.itextpdf.kernel.pdf. The constructor of this class accepts a string, representing the path of the file where the PDF is to be created.

Instantiate the PdfWriter class by passing a string value (representing the path where you need to create a PDF) to its constructor, as shown below.

// Creating a PdfWriter 
String dest = "C:/itextExamples/rotatingImage.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

When an object of this type is passed to a PdfDocument (class), every element added to this document will be written to the file specified.

Step 2: Creating a PdfDocument object

The PdfDocument class is the class that represents the PDF Document in iText. This class belongs to the package com.itextpdf.kernel.pdf. To instantiate this class (in writing mode), you need to pass an object of the class PdfWriter to its constructor.

Instantiate the PdfDocument class by passing the PdfWriter object to its constructor, as shown below.

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

Once a PdfDocument object is created, you can add various elements like page, font, file attachment, and event handler using the respective methods provided by its class.

Step 3: Creating the Document object

The Document class of the package com.itextpdf.layout is the root element while creating a self-sufficient PDF. One of the constructors of this class accepts an object of the class PdfDocument.

Instantiate the Document class by passing the object of the class PdfDocument created in the previous steps, as shown below.

// Creating a Document   
Document document = new Document(pdfDoc); 

Step 4: Creating an Image object

To create an image object, first of all, create an ImageData object using the create()method of the ImageDataFactory class. As a parameter of this method, pass a string parameter representing the path of the image, as shown below.

// Creating an ImageData object 
String imageFile = "C:/itextExamples/javafxLogo.jpg"; 
ImageData data = ImageDataFactory.create(imageFile); 

Now, instantiate the Image class of the com.itextpdf.layout.element package. While instantiating, pass the ImageData object, as a parameter to its constructor, as shown below.

// Creating an Image object 
Image img = new Image(data);

Step 5: rotating an image

You can rotate an image using the setRotationAngle() method. To this method, you need to pass an integer representing the rotation angle by which you want to rotate the image.

// Rotating the image 
image.setRotationAngle(45); 

Step 6: Adding image to the document

Now, add the image object created in the previous step using the add() method of the Document class, as shown below.

// Adding image to the document 
document.add(img); 

Step 7: Closing the Document

Close the document using the close() method of the Document class, as shown below.

// Closing the document 
document.close(); 

Example

The following Java program demonstrates how to rotate an image by a given angle on a PDF document using the iText library.

It creates a PDF document with the name rotatingImage.pdf, adds an image to it, rotates it, and saves it in the path C:/itextExamples/.

Save this code in a file with the name RotatingImage.java.

import com.itextpdf.io.image.ImageData; 
import com.itextpdf.io.image.ImageDataFactory; 

import com.itextpdf.kernel.pdf.PdfDocument; 
import com.itextpdf.kernel.pdf.PdfWriter; 

import com.itextpdf.layout.Document; 
import com.itextpdf.layout.element.Image;  

public class RotatingImage {    
   public static void main(String args[]) throws Exception {              
      // Creating a PdfWriter       
      String dest = "C:/itextExamples/rotatingImage.pdf";       
      PdfWriter writer = new PdfWriter(dest);               
      
      // Creating a PdfDocument       
      PdfDocument pdfDoc = new PdfDocument(writer);              
      
      // Creating a Document        
      Document document = new Document(pdfDoc);              
      
      // Creating an ImageData object       
      String imFile = "C:/itextExamples/logo.jpg";       
      ImageData data = ImageDataFactory.create(imFile);              
      
      // Creating an Image object        
      Image image = new Image(data);                
      
      // Rotating the image       
      image.setRotationAngle(45);                       
      
      // Adding image to the document       
      document.add(image);              
      
      // Closing the document       
      document.close(); 
      
      System.out.println("Image rotated");    
   } 
}   

Compile and execute the saved Java file from the Command prompt using the following commands −

javac RotatingImage.java 
java RotatingImage 

Upon execution, the above program creates a PDF document displaying the following message.

Image Rotated

If you verify the specified path, you can find the created PDF document as shown below.

Rotating Image
Advertisements