Open In App

Adding Images to a Table in PDF using Java

Last Updated : 24 Nov, 2020
Like Article

PDFBox is an open-source library which is written in Java. It helps in the development and conversion of PDF Documents. PDFBox library comes in form of a JAR file. It can create new PDF documents, manipulate existing documents, bookmark the PDF and also extract content from PDF documents. We can use this library for digital signature, print and validate files against the PDF/A-1b standard. It comes with a series of command-line utilities to perform the various operation on PDF documents. Some utilities are encrypting and decrypting PDF, debugging, merging, overlaying, converting text to PDF and PDF to an image. Some components of PDFBox are PDFBox, FontBox, XmpBox, PreFlight. PDFBox is the main part of the PDFBox library. As it contains classes and interfaces for the content extraction and manipulation/modification of files. FontBox holds the classes and interfaces to handle the font information. XmpBox contains the classes and interfaces for handling the XMP metadata. PreFlight is used for verification of the PDF files of PDF/A-1B standard.

iText is an open-source Java library to create and manipulate PDF files in Java and .NET. Initially, the source code was distributed as open-source under the Mozilla Public License or the GNU Library General Public License open source licenses. iText provides support for most advanced PDF features such as PKI-based signatures, 40-bit and 128-bit encryption, color correction, Tagged PDF, PDF forms (AcroForms), PDF/X, color management via ICC profiles and barcodes, and is used by several products and services, including Eclipse BIRT, Jasper Reports, JBoss Seam, Windward Reports, and pdftk. iText provides the user, classes (API’s) to generate interactive PDF documents. By these, we can create maps and books. We can add bookmarks, page numbers, and watermarks. We can split an existing PDF into multiple PDFs and also we can add/concatenate additional pages to it. We can fill interactive forms in a PDF document. We can save PDFs as image files, such as PNG or JPEG (JPG). iText library provides us with a Canvas class using which we can draw various geometrical shapes on a PDF document like rectangle, circle, line, etc.  Using iText, one can create a new PDF file from your Java programs. We can include images and fonts too.

Environment Setup

  • Make a project Using java maven.
  • Go to and add the dependency into your project. By this, the libraries get imported into your project.
  • Now, make a java class under com.mycompany.<Your Project Name> in Source Packages.
  • Nice, now you can use the libraries.

Understanding Concepts

Create Document

First, we create an instance of PDDocument class which belonging to org.apache.pdfbox.pdmodel package. By getting an instance of PDDocument class, we are able to create an empty PDF document.

PDDocument doc = new PDDocument();   

Create Blank Page

The PDPage class is used for creating a blank page in a PDF document. The following code creates a page in our PDF document.

PDPage blankPage = new PDPage();  

Add Page

The addPage() method is used for adding pages in the PDF document. The following code adds a page in our PDF document.

doc.addPage( blankPage );  

Save Document

When we create a document, we have to save the document to our desired location. So, we use save() method to save the document. The save() method accepts a string value and passes a path of the document as a parameter."Path of Document");  

Close Document

We need to close the PDDocument class object after completing the task, by using the close() method 




// Importing the required library functions
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
public class image_insert {
    public static void main(String[] args)
        throws FileNotFoundException, IOException,
        // Create a pdfdocument object
        PDDocument doc = new PDDocument();
        // Create a PDPage  object
        PDPage page = new PDPage();
        // Add page to document object
        // Create FileInputStream object for your image
        FileInputStream in
            = new FileInputStream("D:/Downloads/abc1.jpg");
        PDJpeg img = new PDJpeg(doc, in);
        PDPageContentStream stream
            = new PDPageContentStream(doc, page);
        // Invoke drawXObject() object to draw image onto
        // pdf file.
        stream.drawXObject(img, 200, 220, 220, 200);
        // First two integers are x and y
        // coordinates(position of image) Second two
        // integers are width and height of the image


cd D:\NetBeansProjects\ImagePdf; “JAVA_HOME=C:\\Program Files\\Java\\jdk-14.0.2” cmd /c “\”C:\\Program Files\\NetBeans-12.0\\netbeans\\java\\maven\\bin\\mvn.cmd\” -Dexec.args=\”-classpath %classpath com.mycompany.imagepdf.image_insert\” -Dexec.executable=\”C:\\Program Files\\Java\\jdk-14.0.2\\bin\\java.exe\” -Dexec.classpathScope=runtime -Dmaven.ext.class.path=\”C:\\Program Files\\NetBeans-12.0\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar\” -Dfile.encoding=UTF-8 org.codehaus.mojo:exec-maven-plugin:1.5.0:exec”

Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts.

Scanning for projects…

———————–< com.mycompany:ImagePdf >———————–

Building ImagePdf 1.0-SNAPSHOT

——————————–[ jar ]———————————

— exec-maven-plugin:1.5.0:exec (default-cli) @ ImagePdf —




Total time:  1.372 s

Finished at: 2020-10-31T23:31:58+05:30


If you obtain similar output it means the code has executed successfully.

Insert jpg images to pdf

Note: With the help of the above code you can insert only jpg images into a PDF.

Adding images using PDFBox

1. Make a project Using java maven.

2. Edit the pom.xml file which can be found under the Project Files. You should add the bold part as shown below.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="" xmlns:xsi="" xsi:schemaLocation="">









3. Now just run it and you can observe all the jar files would automatically get installed.

Understanding Concepts

Creating a PdfWriter object

The PdfWriter class represents the DocWriter for a PDF that belongs to the package com.itextpdf.kernel.pdf. The constructor takes a string as input which represents the path of the file where the PDF is to be created. Then initialize the PdfWriter class by passing a string value (representing the path where we need to create a PDF) to its constructor, as shown below.

String destination = "D:/Downloads/My_pdf.pdf";  
PdfWriter writer = new PdfWriter(destination);

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.

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 initialize this class (in writing mode), we need to pass an object of the class PdfWriter to its constructor.

Initialize the PdfDocument class by passing the above created PdfWriter object to its constructor, as shown below.

PdfDocument pdfdocument= new PdfDocument(writer);  

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

Creating the Document object

While creating a self-sufficient PDF the root element is the Document class of the package com.itextpdf.layout. One of the constructors of the class takes an object of the class PdfDocument. Initialize the Document class by passing the object of the class PdfDocument created in the previous steps, as shown below.

Document document = new Document(pdfdocument);  

Creating an Image object

For creating the image object, firstly, we create an ImageData object using the create() method of the ImageDataFactory class. Then, we pass a string parameter representing the path of the image as a parameter of this method.

String imgFile = "D:/img.jpg";  
ImageData data = ImageDataFactory.create(imgFile);

Now, initialize the Image class of the com.itextpdf.layout.element package. When instantiating, we pass the above created ImageData object as a parameter to its constructor, as shown

Image img = new Image(data);  

Adding an image to the document

We can add the image object created in the last step using the add() method of the Document class.


Closing the Document

We need to close the document using the close() method of the Document class




// Adding image to pdf
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 Itext_final {
    public static void main(String args[]) throws Exception
        // Creating a PdfWriter
        PdfWriter writer = new PdfWriter("D:/mypdf1.pdf");
        // Creating a PdfDocument
        PdfDocument pdf = new PdfDocument(writer);
        // Creating a Document
        Document document = new Document(pdf);
        // Creating an ImageData object
        ImageData data = ImageDataFactory.create(
        // Creating an Image object
        Image image = new Image(data);
        // Adding image to the document
        // Closing the document
        System.out.println("Image added successfully!!");


Image added successfully!!

Insert image to a pdf

NOTE: In this method, we can add images of the PNG format, as well as jpg format which is an advantage over PDFBox library.

Similar Reads

Adding Water Marks to the Images in a PDF using Java
In this article, we will learn how to add watermarks to the images in a PDF document using Java. Adding watermarks to the images in a PDF, we will use the iText library. These are the steps that should be followed to add watermarks to the images in a PDF using java. 1. Creating a PdfWriter object The PdfWriter class represents the DocWriter for a P
4 min read
Inserting Images in a PDF using Java
To insert an image in a PDF using Java can be done by using a library called iText. iText is a Java library originally created by Bruno Lowagie which allows creating PDF, read PDF, and manipulate them. Libraries required : iTextslf4j (Logging Library)Download the iText jar files directly from here &amp; download the slf4j jar file directly from her
2 min read
Adding Images to a Slide in a PPT using Java
In Java, using createPicture() method from XSLFSlide, images can be added to the PPT. Now the computer doesn’t understand, what’s there in the picture, so internally, this method accepts the image in a byte array format —&gt; (a series of non-understandable random numbers, letters, symbols, etc.) something like this, AGETRDYDC5545#$^NHVGCFFSFSFGSDF
2 min read
Adding Images to a Word Document using Java
Java makes it possible to add images to Word documents using the addPicture() method of XWPFRun class provided by Apache POI package. Apache POI is a popular API developed and maintained by the Apache Software Foundation. It provides several classes and methods to perform different file operations on Microsoft office files using Java. In order to a
3 min read
Adding Paragraphs as Text to a PDF using Java
iText is a Java library developed, to access and manipulate PDF files, that is to extract and modify the PDF content. Java allows us to incorporate various fully developed packages and modules in order to work with PDF files. We will see how to create a PDF document and add a paragraph to it using the iText library. 1. PdfWriter Java has an inbuilt
4 min read
Adding List in a PDF using Java
In this article, we will learn how to create a PDF and add a list to that PDF using java. For adding a list in a PDF, we will use the iText library. These are the steps that should be followed to add a list in a PDF using java. 1. Creating a PdfWriter object The PdfWriter class represents the DocWriter for a PDF. The constructor of this class accep
3 min read
Adding Image in Existing PDF File using Java
These days, PDF is frequently used for report generation like to generate In order to make the java program interact with files be it of any type word, excel openCV Apache framework comes into play. External Files Required for Build this Code. The first requirement is to import the following libraries files Pdfbox-xxx.jarorg.apache.commons.logging-
2 min read
Adding Nested Tables to a PDF using Java
We can add nested tables to a PDF by installing the document class. While instantiating this class, you would like to pass a PdfDocument object as a parameter, to its constructor. Then, to feature a table to the document, you would like to instantiate the Table class and add this object to the document using the add() method. To add a table to this
4 min read
Adding Pages to a PDF Document using Java
PDDocument class of 'org.apache.pdfbox.pdmodel' package which extends 'java.lang.Object'. is used. Declaration: public class PDDocument extends Object implements Pageable, Closeable Pre-requisite: Constructors PDDocument(): This constructor used to construct a new PDF document with zero pages.PDDocument(COSDocument doc): This constructor uses alrea
4 min read
Create a Table in a PDF Using Java
The creation of a table in a PDF using Java is done by installing the document class. While instantiating this class, pass a PdfDocument object as a parameter to its constructor. Then, to feature a table to the document, instantiate the Table class, and add this object to the document using the add() method. Note: External jar files are required to
1 min read
Article Tags :
Practice Tags :