Wednesday, February 17, 2010

how to generate document, sign on it and send it in mail

Tuesday, February 16, 2010
eDelivery : generate a PDF and send that though email

Hi I got 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.First splitted requirement like generate a pdf
2.add signature and date time stamp
3.email the same to different users..
How to achieve using java and iText library (open source):which works fine..Just wanted to share ..

package com.vasu.edelivery;
import java.awt.Color;
import java.io.FileOutputStream;
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));
document.open(); 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("user.name") + " , " + 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");
subCatPart.add(t);
}
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("mail.smtp.host", "smtp.jcom.net");
// 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");
Transport.send(msg);}
}

9 comments:

  1. can you send me some materials for PEGA CSA certification exam? I would be a great help to me..

    ReplyDelete
  2. Replies
    1. Hi Vasu,

      Thanks for sharing informative blog on Pega PRPC.
      I got myself to learn and work on a little bit of Pega/PRPC along with my other project activities that revolve around .Net.
      Anyways great write up, your efforts are much appreciated.

      Kind Regards,
      Tillu

      Delete



  3. very useful info, and please keep updating........
    Best Online Software Training

    ReplyDelete
  4. This article is very much helpful and i hope this will be an useful information for the needed one. Keep on updating these kinds of informative things...

    Android App Development Company
    iOS App Development Company

    ReplyDelete
  5. Thank you for sharing the important concept in hadoop .pega online training Bangalore

    ReplyDelete
  6. This comment has been removed by the author.

    ReplyDelete