Generate a PDF and send that though email

A requirement in underwriting application
To generate quote letter for insured and home office. send insured letter with signature digitally signed and email it the same to insured.

1.Generate a pdf
2.Add signature and date time stamp
3.Email the same to different users..

To achieve it using java and iText library (open source)

package com.vasu.edelivery;
import java.awt.Color;
import java.util.Date;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import com.lowagie.text.Anchor;
import com.lowagie.text.BadElementException;
import com.lowagie.text.Cell;
import com.lowagie.text.Chapter;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;import com.lowagie.text.Font;
import com.lowagie.text.List;import com.lowagie.text.ListItem;
import com.lowagie.text.Paragraph;import com.lowagie.text.Section;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfWriter;
public class HomeOfficeCopy {
private static String FILE = “c:/vasu/tmp/HomeOfficeCopy.pdf”; 
private static Font catFont = new Font(Font.TIMES_ROMAN, 18, Font.BOLD);
private static Font redFont = new Font(Font.TIMES_ROMAN, 12, Font.NORMAL, Color.RED);
private static Font subFont = new Font(Font.TIMES_ROMAN, 16, Font.BOLD); 
private static Font smallBold = new Font(Font.TIMES_ROMAN, 12, Font.BOLD);
public static void main(String[] args) { 
try {
Document document = new Document(); 
PdfWriter.getInstance(document, new FileOutputStream(FILE));; addTitlePage(document); addContent(document); 
document.close(); } catch (Exception e) { e.printStackTrace(); } }
private static void addTitlePage(Document document) throws DocumentException { Paragraph preface = new Paragraph(); // We add one empty line addEmptyLine(preface, 1); // Lets write a big header preface.add(new Paragraph(“xyz Insurance”, catFont));
addEmptyLine(preface, 1); // Will create: Report generated by: _name, _date preface .add(new Paragraph( “Report signed by: ” +”n”+ System.getProperty(“”) + ” , ” + new Date(), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ smallBold)); addEmptyLine(preface, 3); preface.add(new Paragraph( “This document describes something which is very important “, smallBold));
addEmptyLine(preface, 8);
preface .add(new Paragraph( “This document is a preliminary version for HomeOffice and not subject to AIG ;-).”, redFont));
document.add(preface); // Start a new page document.newPage(); }
private static void addContent(Document document) throws DocumentException { Anchor anchor = new Anchor(“First Chapter”, catFont); anchor.setName(“First Chapter”);
// Second parameter is the number of the chapter Chapter catPart = new Chapter(new Paragraph(anchor), 1);
Paragraph subPara = new Paragraph(“Subcategory 1”, subFont); Section subCatPart = catPart.addSection(subPara); subCatPart.add(new Paragraph(“Hello”));
subPara = new Paragraph(“Subcategory 2”, subFont); subCatPart = catPart.addSection(subPara); subCatPart.add(new Paragraph(“Paragraph 1”)); subCatPart.add(new Paragraph(“Paragraph 2”)); subCatPart.add(new Paragraph(“Paragraph 3”)); // Add a little list createList(subCatPart);
// Add a small table createTable(subCatPart); // Now a small table 
// Now add all this to the document document.add(catPart);
// Next section anchor = new Anchor(“Second Chapter”, catFont); anchor.setName(“Second Chapter”);
// Second parameter is the number of the chapter catPart = new Chapter(new Paragraph(anchor), 1);
subPara = new Paragraph(“Subcategory”, subFont); subCatPart = catPart.addSection(subPara); subCatPart.add(new Paragraph(“This is a very important message”)); // Now add all this to the document document.add(catPart);
private static void createTable(Section subCatPart) throws BadElementException { Table t = new Table(3,2);
t.setBorderColor(Color.GRAY); t.setPadding(4); t.setSpacing(4); t.setBorderWidth(1);
Cell c1 = new Cell(“Table Header 1”); c1.setHeader(true); t.addCell(c1); c1 = new Cell(“Table Header 2”); t.addCell(c1); c1 = new Cell(“Table Header 3”); t.addCell(c1); t.endHeaders(); t.addCell(“1.0”); t.addCell(“1.1”); t.addCell(“1.2”); t.addCell(“2.1”); t.addCell(“2.2”); t.addCell(“2.3”);
private static void createList(Section subCatPart) { List list = new List(true, false, 10); list.add(new ListItem(“First point”)); list.add(new ListItem(“Second point”)); list.add(new ListItem(“Third point”)); subCatPart.add(list); }
private static void addEmptyLine(Paragraph paragraph, int number) { for (int i = 0; i < number; i++) { paragraph.add(new Paragraph(” “)); } }

public void postMail( String recipients[ ], String subject, String message , String from) throws MessagingException{
boolean debug = false;
//Set the host smtp address Properties props = new Properties(); 
props.put(“”, “”);
// create some properties and get the default Session Session session = Session.getDefaultInstance(props, null); session.setDebug(debug);
// create a message Message msg = new MimeMessage(session);
// set the from and to address InternetAddress addressFrom = new InternetAddress(from); msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length]; 
for (int i = 0; i < recipients.length; i++) {
addressTo[i] = new InternetAddress(recipients[i]); } 
msg.setRecipients(Message.RecipientType.TO, addressTo); 
// Optional : You can also set your custom headers in the Email if you Want msg.addHeader(“MyHeaderName”, “myHeaderValue”);
// Setting the Subject and Content Type msg.setSubject(subject); 
msg.setContent(message, “text/plain”); 


Leave a Reply

Your email address will not be published. Required fields are marked *