hi
I am developing a application in web dynpro, I want the output to be displayed in html format.
earlier the program has a third party tool used for printing the output in pdf format ie itext.
I am posting the code also so please suggest me how to go forward in order to get the output displayed in html format, by removing the third party tool.(itext)
thanks
rk
package com.lii.wwhc.adp.warranty;
import java.awt.Color;
import java.io.IOException;
//import java.io.ByteArrayOutputStream;
import java.util.Iterator;
//import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import com.lii.wwhc.adp.warranty.util.*;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import com.sapportals.htmlb.rendering.IPageContext;
import com.sapportals.htmlb.rendering.PageContextFactory;
import com.sapportals.portal.prt.component.*;
public class Print extends AbstractPortalComponent
{
PrintBean pBean = new PrintBean();
SystemFactory sys;
public void doContent(IPortalComponentRequest request, IPortalComponentResponse response)
{
try {
//context
IPageContext myContext = PageContextFactory.createPageContext(request, response);
//component profile.
IPortalComponentProfile profile = request.getComponentContext().getProfile();
//session.
IPortalComponentSession componentSession = request.getComponentSession();
//system object from session.
sys = (SystemFactory)componentSession.getHttpSession().getAttribute("system");
//get tag from request.
String tagNo = request.getParameter("tagNo");
//get claim from database.
ClaimHeader claim = sys.getClaimForTagNumber(tagNo);
//get status list and failure list from database.
java.util.List statusList = sys.getClaimStatusCodes();
java.util.List failureList = sys.getFailureCodes();
//ADP INOF
AdpInfoBean adpInfo = sys.retrieveAdpInfo(claim.getCustomerId());
pBean.setAdpInfo(adpInfo);
//branch address from R3.
Address branchAdr = sys.retrieveCustomerAddress(claim.getBranch());
claim.setBranchAddress(branchAdr);
//Store the info in print bean.
pBean.setClaim(claim);
pBean.setClaimStatusCodes(statusList);
pBean.setFailureCodes(failureList);
pBean.setLogo(Image.getInstance(request.getPublicResourcePath()+"\\images\\logo.jpg"));
//create a document with certain page size
Document document = new Document(PageSize.A4,25,25,60,25);
//ByteArrayOutputStream baos = new ByteArrayOutputStream();
//PdfWriter writer = PdfWriter.getInstance(document, baos);
HttpServletResponse res = request.getServletResponse(true);
//set the mimetype
res.setContentType("application/pdf");
res.setHeader("Expires", "0");
res.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
res.setHeader("Pragma", "public");
PdfWriter writer = PdfWriter.getInstance(document, res.getOutputStream());
writer.setPageEvent(new PageEventImpl(pBean));
//open the document for adding stuff
document.open();
//DocumentTitle
document.add(getTitleTable());
//End DocumentTitle
//Begin Address table
document.add(getAddressTable());
//End Address table
document.add(getClaimHeaderTable());
if(claim.isClaimCredit() && isUnitFailure(claim))
{
document.add(getLineItemForUnitFailTable());
}
else if( ( claim.isClaimCredit() &&
isPartsFailure(claim) ) ||
claim.isClaimGratis())
{
document.add(getLineItemForParts());
}
//Start second part of body
document.close();
/*HttpServletResponse res = request.getServletResponse(true);
//set the mimetype
res.setHeader("Expires", "0");
res.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
res.setHeader("Pragma", "public");
res.setContentType("application/pdf");
res.setContentLength(baos.size());
ServletOutputStream out = res.getOutputStream();
baos.writeTo(out);
out.flush();*/
} catch (Exception e) {
System.out.println(e);
HttpServletResponse res = request.getServletResponse(true);
//set the mimetype
res.setContentType("text/html");
String error = "<span style='color:red'>There was a problem with the application. Please contact Help Desk </span>";
if(pBean.getAdpInfo().getHelpDeskNumber() != "")
error = error + "<span style='color:red'>at "+pBean.getAdpInfo().getHelpDeskNumber()+"</span>";
try {
res.getWriter().write(error);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
/*
* Out puts title of the page.
*/
public PdfPTable getTitleTable()
{
//HEADER TABLE
Phrase p;
PdfPCell cell;
float widths[] = {50,50};
PdfPTable tableTop = new PdfPTable(widths);
tableTop.setWidthPercentage(100);
if(pBean.getClaim().isClaimGratis())
p = new Phrase("Gratis Memo", new Font(Font.TIMES_ROMAN, 14, Font.BOLD, Color.BLACK) );
else
p = new Phrase("Credit Memo", new Font(Font.TIMES_ROMAN, 14, Font.BOLD, Color.BLACK) );
cell = new PdfPCell(p);
cell.setHorizontalAlignment(Rectangle.ALIGN_CENTER);
cell.setColspan(2);
cell.setPaddingTop(75);
if(pBean.getClaim().getStatus() != SystemFactory.SAVE)
{
cell.setPaddingBottom(10);
}
//cell.setBackgroundColor(new Color(23,23,23));
cell.setBorder(0);
tableTop.addCell(cell);
if(pBean.getClaim().getStatus() == SystemFactory.SAVE)
{
p=new Phrase("Claim not yet submitted", new Font(Font.TIMES_ROMAN, 14, Font.BOLD, Color.RED) );
cell = new PdfPCell(p);
cell.setHorizontalAlignment(Rectangle.ALIGN_CENTER);
cell.setPaddingBottom(10);
cell.setBorder(0);
cell.setColspan(2);
tableTop.addCell(cell);
}
return tableTop;
}
/*
* returns the address portion on the page
* branch, dealer and ship to address.
*/
private PdfPTable getAddressTable()
{
ClaimHeader claim = pBean.getClaim();
Phrase p;
PdfPCell cell;
float[] columnDefinitionSize = { 33, 33, 33 };
//create a table with 3 columns
PdfPTable table = new PdfPTable(3);
table.setWidthPercentage(100);
table.setSpacingBefore(20);
p = new Phrase();
p.font().setSize(8);
p.add(getBoldPhrase("Branch:"));
p.add(new Phrase("\r"+claim.getBranchAddress().getName()+" - "+
GeneralHelper.removeLeadingZeros( claim.getBranch()) ));
p.add(new Phrase("\r"+claim.getBranchAddress().getLine1()));
p.add(new Phrase("\r"+claim.getBranchAddress().toStringCityState()));
cell = new PdfPCell(p);
cell.setBorder(0);
table.addCell(cell);
p = new Phrase();
p.font().setSize(8);
p.add( getBoldPhrase("Dealer:"));
p.add(new Phrase("\r"+claim.getDealerAddress().getName()));
p.add(new Phrase("\r"+claim.getDealerAddress().getLine1()));
p.add(new Phrase("\r"+claim.getDealerAddress().toStringCityState() ));
cell = new PdfPCell(p);
cell.setBorder(0);
table.addCell(cell);
if(claim.isClaimGratis())
{
p = new Phrase();
p.font().setSize(8);
p.add(new Phrase("Ship To:" , new Font(Font.TIMES_ROMAN, 10, Font.BOLD, Color.BLACK)));
p.add(new Phrase("\r"+claim.getShipToAddress().getName()));
p.add(new Phrase("\r"+claim.getShipToAddress().getLine1()));
if(!claim.getShipToAddress().getLine2().trim().equals(""))
p.add(new Phrase("\r"+claim.getShipToAddress().getLine2()));
p.add(new Phrase("\r"+claim.getShipToAddress().toStringCityState()));
cell = new PdfPCell(p);
cell.setBorder(0);
table.addCell(cell);
table.addCell(getEmptyCell());
table.addCell(getEmptyCell());
p = new Phrase();
p.font().setSize(8);
p.add(new Phrase("Shiping Method:" , new Font(Font.TIMES_ROMAN, 10, Font.BOLD, Color.BLACK)));
if(claim.getIncoBean() != null)
p.add(new Phrase("\r"+claim.getIncoBean().getDescription()));
cell = new PdfPCell(p);
cell.setBorder(0);
table.addCell(cell);
}
else
{
table.addCell(getEmptyCell());
}
return table;
}
/*
* returns header portion of the claim.
*/
private PdfPTable getClaimHeaderTable()
{
ClaimHeader claim= pBean.getClaim();
Phrase p;
PdfPCell cell;
PdfPTable table = new PdfPTable(4);
table.setWidthPercentage(100);
table.setSpacingBefore(20);
p = new Phrase();
p.font().setSize(8);
p.add(new Phrase("Failed
unit:" , new Font(Font.TIMES_ROMAN, 10, Font.BOLD, Color.BLACK)));
if(claim.getSerialNumberOfFailedUnit() != null && !claim.getSerialNumberOfFailedUnit().trim().equals(""))
p.add(new Phrase("\r" +claim.getSerialNumberOfFailedUnit()+" | " +claim.getModelOfFailedUnit() ));
else
p.add(new Phrase("\r " ));
cell = new PdfPCell(p);
cell.setBorder(0);
table.addCell(cell);
p = new Phrase();
p.font().setSize(8);
p.add(new Phrase("Install Date:" , new Font(Font.TIMES_ROMAN, 10, Font.BOLD, Color.BLACK)));
p.add(new Phrase("\r"+GeneralHelper.formatDateForDisplay(claim.getInstallationDate())));
cell = new PdfPCell(p);
cell.setBorder(0);
table.addCell(cell);
p = new Phrase();
p.font().setSize(8);
p.add(new Phrase("Unit Fail Date:" , new Font(Font.TIMES_ROMAN, 10, Font.BOLD, Color.BLACK)));
p.add(new Phrase("\r"+GeneralHelper.formatDateForDisplay(claim.getUnitFailDate())));
cell = new PdfPCell(p);
cell.setBorder(0);
table.addCell(cell);
p = new Phrase();
p.font().setSize(8);
p.add(new Phrase("Reference Number:" , new Font(Font.TIMES_ROMAN, 10, Font.BOLD, Color.BLACK)));
p.add(new Phrase("\r"+claim.getReferenceNumber()));
cell = new PdfPCell(p);
cell.setBorder(0);
table.addCell(cell);
if(claim.isClaimCredit())
{
p = new Phrase();
p.font().setSize(8);
p.add(new Phrase("Failure Type:" , new Font(Font.TIMES_ROMAN, 10, Font.BOLD, Color.BLACK)));
p.add(new Phrase("\rEntire Unit"));
cell = new PdfPCell(p);
cell.setBorder(0);
table.addCell(cell);
}
p = new Phrase();
p.font().setSize(8);
p.add(new Phrase("Reason for Failure:" , new Font(Font.TIMES_ROMAN, 10, Font.BOLD, Color.BLACK)));
p.add(new Phrase("\r"+ pBean.getFailureDesc(claim.getReasonForFailure()) ));
cell = new PdfPCell(p);
cell.setBorder(0);
table.addCell(cell);
table.addCell(getEmptyCell());
table.addCell(getEmptyCell());
if(claim.isClaimGratis()) //add Aditional emply cell if gratis
table.addCell(getEmptyCell());
return table;
}
/*
* returns lineitems if unit failed for the claim.
*/
private PdfPTable getLineItemForUnitFailTable()
{
ClaimLineItem item = (ClaimLineItem) pBean.getClaim().getLineItem(0);
Phrase p;
PdfPCell cell;
float widths[] = {15,45,20,20};
PdfPTable table = new PdfPTable(widths);
table.setWidthPercentage(100);
table.setSpacingBefore(20);
//HEADERcell.setHorizontalAlignment(Rectangle.ALIGN_CENTER);
table.addCell(getDataCell("Quantity:",true, null));
table.addCell(getDataCell("Replacment Unit:",true, null));
table.addCell(getDataCell("Status:",true, null));
table.addCell(getDataCell("$ Amount:",true, null));
//LINE ITEM
cell =getDataCell(item.getQuantity(),false, null) ;
cell.setPaddingLeft(15);//HorizontalAlignment(Rectangle.ALIGN_CENTER);
table.addCell(cell);
if(item.getSerialNumberOfReplacementUnit() != null && !item.getSerialNumberOfReplacementUnit().trim().equals(""))
table.addCell(getDataCell(item.getSerialNumberOfReplacementUnit()+ " | "+
item.getModelOfReplacementUnit(),false, null));
else
table.addCell(getDataCell( " ",false, null));
table.addCell(getDataCell(pBean.getClaimStatusDesc(item.getStatus()),false, null));
table.addCell(getDataCell(item.getInvoiceAmt(),false, null));
return table;
}
/*
* returns lineitems if one or more parts failed for the claim.
*/
private PdfPTable getLineItemForParts()
{
//ClaimLineItem item = (ClaimLineItem) pBean.getClaim().getLineItem(0);
Phrase p;
PdfPCell cell;
float widths[] = {10,30,30,15,15};
PdfPTable table = new PdfPTable(widths);
table.setWidthPercentage(100);
table.setSpacingBefore(20);
//HEADERcell.setHorizontalAlignment(Rectangle.ALIGN_CENTER);
table.addCell(getDataCell("Quantity:",true, null));
table.addCell(getDataCell("Failed Part:",true, null));
table.addCell(getDataCell("Replacement Part:",true, null));
table.addCell(getDataCell("Status:",true, null));
if(pBean.getClaim().isClaimCredit())
table.addCell(getDataCell("$ Amount:",true, null));
else
table.addCell(getDataCell("Ship Date:",true, null));
Iterator it = pBean.getClaim().getLineItems().iterator();
Color background = null;
while(it.hasNext())
{
ClaimLineItem item = (ClaimLineItem)it.next();
//LINE ITEM
cell =getDataCell(item.getQuantity(),false, background) ;
cell.setPaddingLeft(15);//HorizontalAlignment(Rectangle.ALIGN_CENTER);
table.addCell(cell);
if(item.getFailedPartNumber() != null && !item.getFailedPartNumber().trim().equals(""))
table.addCell(getDataCell(item.getFailedPartNumber()+ " | "+
item.getFailedPartDesc(),false, background));
else
table.addCell(getDataCell(" ",false, background));
if(item.getReplacementPartNumber() != null && !item.getReplacementPartNumber().trim().equals(""))
table.addCell(getDataCell(item.getReplacementPartNumber()+ " | "+
item.getReplacementPartDesc(),false, background));
else
table.addCell(getDataCell(" ",false, background));
table.addCell(getDataCell(pBean.getClaimStatusDesc(item.getStatus()),false, background));
if(pBean.getClaim().isClaimCredit())
table.addCell(getDataCell(item.getInvoiceAmt(),false, background));
else
table.addCell(getDataCell(item.getShipDate(),false, background));
if( background == null)
background = new Color(225,225,225);
else
background = null;
}
return table;
}
/*
* helper method to check if claim is for parts failure.
*/
private boolean isPartsFailure(ClaimHeader claim)
{
//ClaimHeader claim= pBean.getClaim();
String failureType = claim.getLineItem(0).getFailureType();
if(failureType.equals(ClaimHeader.FAILURE_TYPE_PART))
return true;
else
return false;
}
/*
* helper method to check if claim is for unit failure.
*/
private boolean isUnitFailure(ClaimHeader claim)
{
//ClaimHeader claim= pBean.getClaim();
String failureType = claim.getLineItem(0).getFailureType();
if(failureType.equals(ClaimHeader.FAILURE_TYPE_UNIT))
return true;
else
return false;
}
/*
* returns a PdfPcell.
*/
private PdfPCell getDataCell(String data, boolean headerCell, Color background)
{
Phrase p;
PdfPCell cell;
p = new Phrase();
p.font().setSize(8);
if(headerCell)
p.add(new Phrase(data , new Font(Font.TIMES_ROMAN, 10, Font.BOLD, Color.BLACK)));
else
p.add(new Phrase(data));
cell = new PdfPCell(p);
cell.setBorder(0);
if(background != null)
cell.setBackgroundColor(background);
return cell;
}
/*
* returns an empty cell.
*/
private PdfPCell getEmptyCell()
{
PdfPCell c = new PdfPCell(new Phrase(""));
c.setBorder(0);
return c;
}
/*
* returns a phrase as bold.
*/
private Phrase getBoldPhrase(String data)
{
return new Phrase(data,new Font(Font.TIMES_ROMAN, 10, Font.BOLD, Color.BLACK));
}
}