How to Create PDF dynamically with Images using JAVA
In this video tutorial I have shown how you can generate PDF using JAVA.
This project need the jar itextpdf-5.1.0 jar to be added in Class path
- Project Structure
- Code to create simple PDF File
Create_PDF.javapackage com.chillyfacts.com; import java.io.File; import java.io.FileOutputStream; import com.itextpdf.text.*; import com.itextpdf.text.pdf.PdfWriter; public class Create_PDF { public static void main(String[] args) { String FILE_NAME = "E:\\java_pdf\\chillyfacts.pdf"; Document document = new Document(); try { PdfWriter.getInstance(document, new FileOutputStream(new File(FILE_NAME))); document.open(); Paragraph p = new Paragraph(); p.add("Text 1"); p.setAlignment(Element.ALIGN_CENTER); document.add(p); Paragraph p2 = new Paragraph(); p2.add("Text 2"); //no alignment document.add(p2); Font f = new Font(); f.setStyle(Font.BOLD); f.setSize(8); document.add(new Paragraph("This is my paragraph 3", f)); document.add(Image.getInstance("E:\\java_pdf\\chillyfacts.png")); document.close(); System.out.println("Done"); } catch (Exception e) { e.printStackTrace(); } } }
The above code will generate Image in location E:\\java_pdf\\chillyfacts.pdf.
- Create PDF file using data from MySQL Database.
Connection class will connect to a database ‘test’ from MySQL
DBConnection.javapackage com.chillyfacts.com; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnection { public Connection getConnection() { Connection connection = null; System.out.println("Connection called"); try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return connection; } }
Create_PDF_FROM_DB.java
package com.chillyfacts.com; import java.io.File; import java.io.FileOutputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import com.itextpdf.text.*; import com.itextpdf.text.pdf.PdfWriter; public class Create_PDF_FROM_DB { public static void main(String[] args) { String FILE_NAME = "E:\\java_pdf\\chillyfacts_DB.pdf"; Document document = new Document(); try { PdfWriter.getInstance(document, new FileOutputStream(new File(FILE_NAME))); document.open(); Paragraph p = new Paragraph(); p.add("Text 1"); p.setAlignment(Element.ALIGN_CENTER); document.add(p); Paragraph p2 = new Paragraph(); p2.add("Text 2"); //no alignment document.add(p2); Font f = new Font(); f.setStyle(Font.BOLD); f.setSize(8); document.add(new Paragraph("This is my paragraph 3", f)); document.add(Image.getInstance("E:\\java_pdf\\chillyfacts.png")); DBConnection obj_DBConnection = new DBConnection(); Connection connection = obj_DBConnection.getConnection(); String query = "select * from date_time"; Statement stmt = null; stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(query); Paragraph p3 = null; while (rs.next()) { p3 = new Paragraph(); p3.add(rs.getString("date_time")); document.add(p3); } document.close(); System.out.println("Done"); } catch (Exception e) { e.printStackTrace(); } } }
The above code will generate a PDF with data from Database.
- Create simple pdf in JSP Page.
<%@page import="com.itextpdf.text.pdf.PdfWriter"%> <%@page import="com.itextpdf.text.Image"%> <%@page import="com.itextpdf.text.Font"%> <%@page import="com.itextpdf.text.Element"%> <%@page import="com.itextpdf.text.Paragraph"%> <%@page import="com.itextpdf.text.Document"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <% response.setContentType("application/pdf"); Document document = new Document(); PdfWriter writer=PdfWriter.getInstance(document, response.getOutputStream()); document.open(); Paragraph p = new Paragraph(); p.add("Text 1"); p.setAlignment(Element.ALIGN_CENTER); document.add(p); Paragraph p2 = new Paragraph(); p2.add("Text 2"); //no alignment document.add(p2); Font f = new Font(); f.setStyle(Font.BOLD); f.setSize(8); document.add(new Paragraph("This is my paragraph 3", f)); document.add(Image.getInstance("E:\\java_pdf\\chillyfacts.png")); document.close(); %> </body> </html>
http://localhost:8080/Create_Pdf/Create_PDF.jsp
- Create PDF in JSP page with data from MySQL database
Create_PDF_DB.jsp<%@page import="java.sql.ResultSet"%> <%@page import="java.sql.Statement"%> <%@page import="java.sql.Connection"%> <%@page import="com.chillyfacts.com.DBConnection"%> <%@page import="com.itextpdf.text.pdf.PdfWriter"%> <%@page import="com.itextpdf.text.Image"%> <%@page import="com.itextpdf.text.Font"%> <%@page import="com.itextpdf.text.Element"%> <%@page import="com.itextpdf.text.Paragraph"%> <%@page import="com.itextpdf.text.Document"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <% response.setContentType("application/pdf"); Document document = new Document(); PdfWriter writer=PdfWriter.getInstance(document, response.getOutputStream()); document.open(); Paragraph p = new Paragraph(); p.add("Text 1"); p.setAlignment(Element.ALIGN_CENTER); document.add(p); Paragraph p2 = new Paragraph(); p2.add("Text 2"); //no alignment document.add(p2); Font f = new Font(); f.setStyle(Font.BOLD); f.setSize(8); document.add(new Paragraph("This is my paragraph 3", f)); document.add(Image.getInstance("E:\\java_pdf\\chillyfacts.png")); DBConnection obj_DBConnection=new DBConnection(); Connection connection=obj_DBConnection.getConnection(); String query="select * from date_time"; Statement stmt = null; stmt = connection.createStatement(); ResultSet rs=stmt.executeQuery(query); Paragraph p3=null; while(rs.next()){ p3 = new Paragraph(); p3.add(rs.getString("date_time")); document.add(p3); } document.close(); %> </body> </html>
- Designed PDF page with Table and Borders added.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@page import="com.itextpdf.text.Document"%> <%@page import="com.itextpdf.text.pdf.PdfWriter"%> <%@page import="com.itextpdf.text.Paragraph"%> <%@page import="com.itextpdf.text.pdf.PdfDocument"%> <%@page import="java.io.File"%> <%@page import="com.itextpdf.text.pdf.PdfPage"%> <%@page import="com.itextpdf.text.pdf.PdfPTable"%> <%@page import="java.io.FileOutputStream"%> <%@page import="com.itextpdf.text.Element"%> <%@page import="com.itextpdf.text.Image"%> <%@page import="java.net.URL"%> <%@page import="com.itextpdf.text.Font"%> <%@page import="com.itextpdf.text.Phrase"%> <%@page import="com.itextpdf.text.Chunk"%> <%@page import="com.itextpdf.text.Rectangle"%> <%@page import="com.itextpdf.text.pdf.PdfContentByte"%> <%@page import="com.itextpdf.text.pdf.BaseFont"%> <%@page import="java.util.List"%> <%@page import="java.util.Iterator"%><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <center> <% response.setContentType("application/pdf"); Rectangle pageSize = new Rectangle(780, 525); Document document = new Document(pageSize); PdfWriter writer=PdfWriter.getInstance(document, response.getOutputStream()); //PdfWriter.getInstance(document, response.getOutputStream()); document.open(); //document.addHeader("jinu","jawad"); float[] colsWidth1 = {1f, 1f, 1f,1f,1f}; // Code 1 //Image image = Image.getInstance(path+"employee/payslip/view/fly-hind.jpg"); PdfPTable table = new PdfPTable(colsWidth1); table.getDefaultCell().setBorder(0); table.setWidthPercentage(100); // Code 2 table.setHorizontalAlignment(Element.ALIGN_LEFT);//Code 3 table.addCell(""); table.addCell(""); table.addCell("Pay Slip For The Month December"); table.addCell(""); table.addCell(""); document.add(table); document.add( Chunk.NEWLINE ); document.add( Chunk.NEWLINE ); float[] colsWidth_main = {1f, 1f, 1f}; // Code 1 table = new PdfPTable(colsWidth_main); table.getDefaultCell().setBorder(0); table.setWidthPercentage(100); // Code 2 table.setHorizontalAlignment(Element.ALIGN_LEFT);//Code 3 table.addCell(""); table.addCell(Image.getInstance("E:\\java_pdf\\chillyfacts.png")); table.addCell(""); document.add(table); float[] colsWidth = {1f, 1f, 1f, 1f}; // Code 1 table = new PdfPTable(colsWidth); table.getDefaultCell().setBorder(0); table.setWidthPercentage(100); // Code 2 table.setHorizontalAlignment(Element.ALIGN_LEFT);//Code 3 table.addCell("Employee ID"); table.addCell("00000"); table.addCell("Name"); table.addCell("00000"); table.addCell("Department"); table.addCell("00000"); table.addCell("Designation"); table.addCell("00000"); table.addCell("Date Of Joining"); table.addCell("00000"); table.addCell("PF Account No"); table.addCell("00000"); table.addCell("Days Worked"); table.addCell("00000"); table.addCell("ESI Account Number"); table.addCell("00000"); table.addCell("Casual Leave"); table.addCell("00000"); table.addCell("Adhar Number"); table.addCell("00000"); table.addCell("PAN Number"); table.addCell("00000"); table.addCell(" "); table.addCell(" "); table.addCell(" "); table.addCell(" "); document.add(table); document.add( Chunk.NEWLINE ); document.add( Chunk.NEWLINE ); Font boldFont = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD); PdfPTable table1 = new PdfPTable(colsWidth); table1.setWidthPercentage(100); // Code 2 table1.setHorizontalAlignment(Element.ALIGN_LEFT);//Code 3 Phrase Earnings = new Phrase("Earnings", boldFont ); Phrase Amount = new Phrase("Amount", boldFont ); Phrase Deductions = new Phrase("Deductions", boldFont ); Phrase Amount1 = new Phrase("Amount1", boldFont ); Phrase total_earnings = new Phrase("Total Earning", boldFont ); Phrase total_deductions = new Phrase("Total Deductions", boldFont ); table1.addCell(Earnings); table1.addCell(Amount); table1.addCell(Deductions); table1.addCell(Amount); table1.addCell("Basic Pay"); table1.addCell("00000"); table1.addCell("PF"); table1.addCell("00000"); table1.addCell("HRA"); table1.addCell("00000"); table1.addCell("ESI"); table1.addCell("00000"); table1.addCell("Festival Allowance"); table1.addCell("00000"); table1.addCell("Professional Taxes"); table1.addCell("00000"); table1.addCell("Others"); table1.addCell("00000"); table1.addCell("Others"); table1.addCell("00000"); table1.addCell(total_earnings); table1.addCell("00000"); table1.addCell(total_deductions); table1.addCell("00000"); document.add(table1); PdfPTable table2 = new PdfPTable(colsWidth); table2.setWidthPercentage(100); // Code 2 table2.getDefaultCell().setBorder(0); table2.setHorizontalAlignment(Element.ALIGN_MIDDLE);//Code 3 Phrase employers_signature = new Phrase("Employer's Signature", boldFont ); Phrase employees_signature = new Phrase("Employee's Signature", boldFont ); document.add( Chunk.NEWLINE ); table2.addCell(" "); table2.addCell(" "); table2.addCell(" "); table2.addCell(" "); table2.addCell(employers_signature); table2.addCell(""); table2.addCell(employees_signature); table2.addCell(""); document.add( Chunk.NEWLINE ); document.add(table2); PdfContentByte cb = writer.getDirectContent(); cb.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, false), 24); cb.setLineWidth(3); cb.moveTo(10, 515); cb.lineTo(770,515 ); cb.moveTo(10, 10); cb.lineTo(770,10 ); cb.moveTo(770, 515); cb.lineTo(770, 10); cb.moveTo(10, 515); cb.lineTo(10, 10); cb.stroke(); document.close(); %> </center> </body> </html>
The above code will generate PDF image in JSP page as,
-
Download the Complete project here
Create_Pdf.rar
0 Comments
Comments
Leave a Comment