skip to main | skip to sidebar

Java Programs and Examples with Output

Pages

▼
 
  • RSS
  • Twitter
Friday, September 14, 2012

Use PdfContentByte to generate PDF reports

Posted by Admin at 12:35 PM – 0 comments
 

Its a sample PDF code that helps you generate a PDF document using PdfContentByte. Most of the code changes are self explainatory.


import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.pdf.ColumnText;


public class PharmacyReportGenerator {

 private static final String FILE_EXTENSION = "demographics.pdf";
 static Font font = new Font(Font.FontFamily.HELVETICA, 7, Font.NORMAL);
 static Font smallfont = new Font(Font.FontFamily.HELVETICA, 6, Font.NORMAL);
 static Font boldFont = new Font(Font.FontFamily.HELVETICA, 10, Font.BOLD);
 static Font titleFont = new Font(Font.FontFamily.HELVETICA, 16f, Font.BOLD, BaseColor.GRAY);
 static final String ADDRESS_STRING = "Big Pharmacy#85748 - \n\n BIG PHARMACY STORE # 12980 \n\n 200 STREET FAMOUS \n\n SACRAMENTO, CA 17319-0000 \n\n (656)993-2782";
 static final String TITLE_TEXT = "Customer Verification Form";
 static final String SUB_TITLE_TEXT = "Please review the information listed below and update the fields if necessary and return to pharmacy.";
 static final String MULTIPLE_INSURANCES = "PLEASE CHECK THE INSURANCES";
 
 
 
 public void generateDemographicsReport() {
  try {
   Document document = new Document(PageSize.A4.rotate());
   PharmacyReportGenerator report = new PharmacyReportGenerator();
   String fileName = AppParam.BOATEMPDIR()+customerNumber+FILE_EXTENSION;
   PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(fileName));
   document.open();
   PdfContentByte cb = writer.getDirectContent();
   document.add(report.addTitleTable());
   addHorizontalSeperatorLine(cb, 485f);
   report.addPersonalInformationSection(cb);
   String fullName = DataDefunkifier.formatPersonName(demographicsData.getLName(), demographicsData.getFName(), null);
   report.printTextValueFromSystem(cb, 154, 454, fullName);
   report.printTextValueFromSystem(cb, 154, 440, demographicsData.getAddress1());
   report.printTextValueFromSystem(cb, 155, 424, demographicsData.getAddress2());
   report.printTextValueFromSystem(cb, 155, 410, demographicsData.getState());
   report.printTextValueFromSystem(cb, 155, 394, demographicsData.getZipCode());
   report.printTextValueFromSystem(cb, 155, 380, demographicsData.getPhnNbr());
   report.printTextValueFromSystem(cb, 155, 364, demographicsData.getEmailId());
   report.printTextValueFromSystem(cb, 155, 350, demographicsData.getDOB());
   report.printTextValueFromSystem(cb, 155, 334, demographicsData.getSexCde());
   report.printTextValueFromSystem(cb, 155, 320, demographicsData.getPcpName());
   addHorizontalSeperatorLine(cb, 312f);
   report.addAllergiesSection(cb, demographicsData.getAllergies());
   addHorizontalSeperatorLine(cb, 274f);
   report.addConditionsSection(cb, demographicsData.getConditions());
   addHorizontalSeperatorLine(cb, 238f);
   report.addInsuranceSection(cb);
 //  report.addInsuranceValues(cb, customerNumber);
   addHorizontalSeperatorLine(cb, 162f);
   report.addPreferencesSection(cb, demographicsData.getPreferences());
   addHorizontalSeperatorLine(cb, 123f);
   report.addAdditionalInformationSection(cb);
   addHorizontalSeperatorLine(cb, 80f);
  //        addContent(document);
   document.close();
  } catch (Exception e) {
   AppParam.getLog().error("Exception while creating patient demographics report "+e.getMessage());
  }
 }

 private PdfPTable addTitleTable() throws DocumentException {
  PdfPTable titleTable = new PdfPTable(3);
  float[] columnWidths = {0.2f, 0.5f, 1f};
  titleTable.setWidthPercentage(100);
  titleTable.setWidths(columnWidths);
  PdfPCell cell1 = new PdfPCell();
  disableCellBorders(cell1);
  titleTable.addCell(cell1);
  PdfPCell cell2 = getAddressAsString();
  disableCellBorders(cell2);
  titleTable.addCell(cell2);
  PdfPCell cell3 = getTitleText();
  cell3.setPaddingTop(20f);
  cell3.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
  disableCellBorders(cell3);
  titleTable.addCell(cell3);
  return titleTable;
 }

 
 private PdfPCell getAddressAsString(){
  return (new PdfPCell(new Paragraph(ADDRESS_STRING, font)));
 }
 
 private PdfPCell getTitleText(){
  PdfPCell cell = new PdfPCell();
  PdfPTable subTable = new PdfPTable(1);
  subTable.setWidthPercentage(100);
  PdfPCell subCell1 = new PdfPCell(new Paragraph(TITLE_TEXT, titleFont));
  subCell1.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
  subCell1.setPaddingBottom(5f);
  disableCellBorders(subCell1);
  PdfPCell subCell2 = new PdfPCell(new Paragraph(SUB_TITLE_TEXT, font));
  subCell2.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
  subCell2.setPaddingTop(5f);
  disableCellBorders(subCell2);
  
  subTable.addCell(subCell1);
  subTable.addCell(subCell2);
  cell.addElement(subTable);
  return cell;
 }
 
 private void addPersonalInformationSection(PdfContentByte cb) throws DocumentException, IOException {
  BaseFont bfBold = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
  BaseFont bfNormal = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
  cb.beginText();
  cb.moveText(40f, 470f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Personal Information:"));
  cb.endText();

  cb.beginText();
  cb.moveText(40f, 455f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Name:"));
  cb.endText();
  
  cb.beginText();
  cb.moveText(40f, 440f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Address:"));
  cb.endText();

  cb.beginText();
  cb.moveText(40f, 425f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Address(continued):"));
  cb.endText();

  cb.beginText();
  cb.moveText(40f, 410f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("State:"));
  cb.endText();


  cb.beginText();
  cb.moveText(40f, 395f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Zip:"));
  cb.endText();

  cb.beginText();
  cb.moveText(40f, 380f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Phone Number:"));
  cb.endText();

  cb.beginText();
  cb.moveText(40f, 365f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Email Address:"));
  cb.endText();

  cb.beginText();
  cb.moveText(40f, 350f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Date of Birth:"));
  cb.endText();

  cb.beginText();
  cb.moveText(40f, 335f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Gender:"));
  cb.endText();

  cb.beginText();
  cb.moveText(40f, 320f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText("PCP Name:");
  cb.endText();
  
  
  cb.beginText();
  cb.moveText(400f, 470f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Updated Personal Information:"));
  cb.endText();

  cb.beginText();
  cb.moveText(400f, 455f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Name:"));
  cb.endText();
  addLineForManualEntry(cb, 520f, 453f);
  
  cb.beginText();
  cb.moveText(400f, 440f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Address:"));
  cb.endText();
  addLineForManualEntry(cb, 520f, 438f);
  
  cb.beginText();
  cb.moveText(400f, 425f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Address(continued):"));
  cb.endText();
  addLineForManualEntry(cb, 520f, 423f);

  cb.beginText();
  cb.moveText(400f, 410f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("State:"));
  cb.endText();
  addLineForManualEntry(cb, 520f, 408f);


  cb.beginText();
  cb.moveText(400f, 395f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Zip:"));
  cb.endText();
  addLineForManualEntry(cb, 520f, 393f);

  cb.beginText();
  cb.moveText(400f, 380f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Phone Number:"));
  cb.endText();
  addLineForManualEntry(cb, 520f, 378f);

  cb.beginText();
  cb.moveText(400f, 365f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Email Address:"));
  cb.endText();
  addLineForManualEntry(cb, 520f, 363f);

  cb.beginText();
  cb.moveText(400f, 350f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Date of Birth:"));
  cb.endText();
  addLineForManualEntry(cb, 520f, 348f);

  cb.beginText();
  cb.moveText(400f, 335f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Gender:"));
  cb.endText();
  addLineForManualEntry(cb, 520f, 332f);

  cb.beginText();
  cb.moveText(400f, 320f); 
  cb.setFontAndSize(bfNormal, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText("PCP Name:");
  cb.endText();
  addLineForManualEntry(cb, 520f, 318f);
 }
  
 private void addAllergiesSection(PdfContentByte cb, String allergies) throws DocumentException, IOException {
  BaseFont bfBold = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
  
  cb.beginText();
  cb.moveText(40f, 296f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Allergies: "));
  cb.endText();

  ColumnText ctMsg = new ColumnText(cb);
  Font textFontMsg = FontFactory.getFont(FontFactory.HELVETICA, 8, Font.NORMAL);
  float leadingMSG = 12;

  ctMsg.addText(new Chunk(allergies, textFontMsg));
  ctMsg.setSimpleColumn(150, 315, 330, 270, leadingMSG, Element.ALIGN_LEFT);
  ctMsg.go();

  cb.beginText();
  cb.moveText(400f, 296f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Updated Allergies: "));
  cb.endText();
 
  addLineForManualEntry(cb, 520f, 296f);
  addLineForManualEntry(cb, 520f, 282f);
 }
 
 private void addConditionsSection(PdfContentByte cb, String conditions) throws DocumentException, IOException {
  BaseFont bfBold = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
  
  cb.beginText();
  cb.moveText(40f, 260f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Conditions: "));
  cb.endText();

  ColumnText ctMsg = new ColumnText(cb);
  Font textFontMsg = FontFactory.getFont(FontFactory.HELVETICA, 8, Font.NORMAL);
  float leadingMSG = 12;

  ctMsg.addText(new Chunk(conditions, textFontMsg));
  ctMsg.setSimpleColumn(145, 278, 330, 233, leadingMSG, Element.ALIGN_LEFT);
  ctMsg.go();
  
  cb.beginText();
  cb.moveText(400f, 260f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Updated Conditions: "));
  cb.endText();
 
  addLineForManualEntry(cb, 525f, 260f);
  addLineForManualEntry(cb, 525f, 246f);
 }

 private void addInsuranceSection(PdfContentByte cb) throws DocumentException, IOException {
  BaseFont bfBold = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
  
  cb.beginText();
  cb.moveText(40f, 224f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Insurance: "));
  cb.endText();

  cb.beginText();
  cb.moveText(400f, 224f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Updated Insurance: "));
  cb.endText();
 
  addLineForManualEntry(cb, 400f, 200f);
  addLineForManualEntry(cb, 400f, 186f);
  addLineForManualEntry(cb, 400f, 172f);
 }

 private void addPreferencesSection(PdfContentByte cb, String preferences) throws DocumentException, IOException {
  BaseFont bfBold = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
  
  cb.beginText();
  cb.moveText(40f, 148f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Preferences: "));
  cb.endText();

  ColumnText ctMsg = new ColumnText(cb);
  Font textFontMsg = FontFactory.getFont(FontFactory.HELVETICA, 8, Font.NORMAL);
  float leadingMSG = 12;

  ctMsg.addText(new Chunk(preferences, textFontMsg));
  ctMsg.setSimpleColumn(145, 165, 330, 126, leadingMSG, Element.ALIGN_LEFT);
  ctMsg.go();

  cb.beginText();
  cb.moveText(400f, 148f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Updated Preferences: "));
  cb.endText();
 
  addLineForManualEntry(cb, 530f, 148f);
  addLineForManualEntry(cb, 530f, 134f);
 }

 private void addAdditionalInformationSection(PdfContentByte cb) throws DocumentException, IOException {
  BaseFont bfBold = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
  
  cb.beginText();
  cb.moveText(40f, 110f); 
  cb.setFontAndSize(bfBold, 10f);
  cb.setCharacterSpacing(1.2f);
  cb.showText(DataDefunkifier.toTitleCase("Additional Information: "));
  cb.endText();
 
  addLineForManualEntry(cb, 175f, 104f);
  addLineForManualEntry(cb, 175f, 90f);
 }
 
 private static void addHorizontalSeperatorLine(PdfContentByte cb, float y){
  cb.setLineWidth(1.0f); 
        cb.moveTo(40f, y); 
        cb.lineTo(815, y); 
        cb.stroke(); 
 }
 
 
 public void disableCellBorders(PdfPCell cell){
  cell.disableBorderSide(PdfPCell.TOP);
  cell.disableBorderSide(PdfPCell.BOTTOM);
  cell.disableBorderSide(PdfPCell.LEFT);
  cell.disableBorderSide(PdfPCell.RIGHT);
 }
 
 private void addLineForManualEntry(PdfContentByte cb, float x, float y){
  cb.beginText();
  cb.setLineWidth(1f);
        cb.moveTo(x, y); 
        cb.lineTo(815f, y); 
        cb.stroke(); 
  cb.endText();
 }

 private void printTextValueFromSystem(PdfContentByte cb, float x, float y, String text) throws IOException, DocumentException {
  BaseFont bfNormal = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED);
  cb.beginText();
  cb.moveText(x, y); 
  cb.setFontAndSize(bfNormal, 8f);
  cb.showText(text);
  cb.endText();
 }

 
 private void addInsuranceValues(PdfContentByte cb, String customerNumber) throws DataModuleException, SystemException {
     CustomerInsurance custIns = new CustomerEnrollmentResolver().getActiveCustomerInsurance(Integer.parseInt(customerNumber));
         if (null != custIns) {
          ArrayList insuranceCards = custIns.getInsuranceCardList();
           int insSize = insuranceCards.size();
           
           
 }
}
}


Labels: PDF Generation Example

Leave a Reply

Newer Post Older Post
Subscribe to: Post Comments ( Atom )
  • Popular
  • Recent
  • Archives
Powered by Blogger.
 
 
 
© 2011 Java Programs and Examples with Output | Designs by Web2feel & Fab Themes

Bloggerized by DheTemplate.com - Main Blogger