List of usage examples for com.lowagie.text Chunk Chunk
public Chunk(DrawInterface separator, float tabPosition)
From source file:org.posterita.businesslogic.performanceanalysis.POSReportManager.java
License:Open Source License
public static String getShipmentPDFReport(Properties ctx, int minoutId, String trxName) throws OperationException { String docStatus = null;//from w w w.ja v a 2 s . co m String dateOrdered = null; String docType = null; String orgName = null; String orgAddress = null; String salesRep = null; String phone = " "; String fax = " "; String customerName = null; String customerAddress = null; String documentNo = null; MInOut minout = MinOutManager.loadMInOut(ctx, minoutId, trxName); // getting orgInfo MOrg org = new MOrg(ctx, minout.getAD_Org_ID(), trxName); int location_id = org.getInfo().getC_Location_ID(); MLocation location = new MLocation(ctx, location_id, trxName); MBPartner orgPartner = new MBPartner(ctx, org.getLinkedC_BPartner_ID(trxName), trxName); MBPartnerLocation meLocation[] = MBPartnerLocation.getForBPartner(ctx, orgPartner.get_ID()); if (meLocation.length != 1) throw new OperationException("Should have only 1 location for organisation business partner!!"); MBPartnerLocation orgLocation = meLocation[0]; if (orgLocation.getPhone() != null) phone = orgLocation.getPhone(); if (orgLocation.getFax() != null) fax = orgLocation.getFax(); ; orgName = org.getName(); String address1 = (location.getAddress1() == null) ? " " : location.getAddress1(); String address2 = (location.getAddress2() == null) ? " " : location.getAddress2(); orgAddress = (address1 + " " + address2).trim(); // getting order type MDocType doctype = MDocType.get(ctx, minout.getC_DocType_ID()); docType = doctype.getName(); // getting orderInfo docStatus = minout.getDocStatusName(); documentNo = minout.getDocumentNo(); Date d = new Date(minout.getCreated().getTime()); SimpleDateFormat s = new SimpleDateFormat(TimestampConvertor.DEFAULT_DATE_PATTERN1); dateOrdered = s.format(d); // getting salesrep int saleRep_id = minout.getSalesRep_ID(); MUser user = new MUser(ctx, saleRep_id, trxName); salesRep = user.getName(); // getting customer info int bpartner_id = minout.getC_BPartner_ID(); BPartnerBean bean = BPartnerManager.getBpartner(ctx, bpartner_id, trxName); String name1 = (bean.getPartnerName() == null) ? " " : bean.getPartnerName(); String name2 = (bean.getName2() == null) ? " " : bean.getName2(); customerName = (name1 + " " + name2).trim(); address1 = (bean.getAddress1() == null) ? " " : bean.getAddress1(); address2 = (bean.getAddress2() == null) ? " " : bean.getAddress2(); customerAddress = (address1 + " " + address2).trim(); ArrayList<WebMinOutLineBean> orderLineList = MinOutManager.getWebMinOutLines(ctx, minout); // ----------------------------------- generating pdf // -------------------------------------- String reportName = RandomStringGenerator.randomstring() + ".pdf"; String reportPath = ReportManager.getReportPath(reportName); Font titleFont = new Font(Font.TIMES_ROMAN, 18, Font.BOLD); Font subtitleFont = new Font(Font.TIMES_ROMAN, 14, Font.BOLD); Font headerFont = new Font(Font.TIMES_ROMAN, 11, Font.BOLD); Font simpleFont = new Font(Font.TIMES_ROMAN, 10); float cellBorderWidth = 0.0f; // step 1: creation of a document-object Document document = new Document(PageSize.A4, 30, 30, 20, 40);// l,r,t,b // document.getPageSize().set; System.out.println(document.leftMargin()); try { // step 2: // we create a writer that listens to the document // and directs a PDF-stream to a file PdfWriter.getInstance(document, new FileOutputStream(reportPath)); // step 3: we open the document document.open(); // step 4: we add a paragraph to the document Image logo = null; // TODO: make this part dynamic <------------------------------ // IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!! String imageURI = PathInfo.PROJECT_HOME + "images/pos/openBLUE_POS_Logo.gif"; logo = Image.getInstance(imageURI); // MAttachment attachment = new // MAttachment(ctx,MOrg.Table_ID,org.getID(),null); // logo = Image.getInstance(attachment.getEntries()[0].getData()); try { byte logoData[] = OrganisationManager.getLogo(ctx, null); logo = Image.getInstance(logoData); } catch (LogoException ex) { logo = Image.getInstance(imageURI); } logo.setAbsolutePosition(document.left(), document.top() - logo.getHeight()); document.add(logo); PdfPTable table = new PdfPTable(2); PdfPCell cell = null; // table.getDefaultCell().setPadding(5.0f); table.setWidthPercentage(100.0f); // header cell Paragraph title = new Paragraph(); title.add(new Chunk(orgName, subtitleFont)); title.add(new Chunk("\n")); title.add(new Chunk(orgAddress, subtitleFont)); title.add(new Chunk("\n")); title.add(new Chunk("Phone: " + phone, subtitleFont)); title.add(new Chunk("\n")); title.add(new Chunk("Fax: " + fax, subtitleFont)); // cell = new PdfPCell(new Paragraph(new // Chunk("Title1",titleFont))); cell = new PdfPCell(title); cell.setColspan(2); cell.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT); cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); cell.setFixedHeight(logo.getHeight()); cell.setBorderWidth(cellBorderWidth); table.addCell(cell); cell = new PdfPCell(new Paragraph("")); cell.setBorderWidth(cellBorderWidth); cell.setFixedHeight(10); cell.setColspan(2); table.addCell(cell); // doc type cell = new PdfPCell(new Paragraph(new Chunk(docType, titleFont))); cell.setColspan(2); cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); cell.setBorderWidth(cellBorderWidth); table.addCell(cell); // spacing cell = new PdfPCell(new Paragraph("")); cell.setBorderWidth(cellBorderWidth); cell.setFixedHeight(10); cell.setColspan(2); table.addCell(cell); // row 1 cell = new PdfPCell(new Paragraph(new Chunk(customerName, headerFont))); cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT); cell.setBorderWidth(cellBorderWidth); table.addCell(cell); cell = new PdfPCell(new Paragraph(new Chunk("Sales Rep: " + salesRep, headerFont))); cell.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT); cell.setBorderWidth(cellBorderWidth); table.addCell(cell); // row 2 cell = new PdfPCell(new Paragraph(new Chunk(customerAddress, headerFont))); cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT); cell.setBorderWidth(cellBorderWidth); table.addCell(cell); // spacing cell = new PdfPCell(new Paragraph("")); cell.setBorderWidth(cellBorderWidth); cell.setFixedHeight(10); cell.setColspan(2); table.addCell(cell); // row 3 cell = new PdfPCell(new Paragraph(new Chunk("No: " + documentNo, headerFont))); cell.setColspan(2); cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT); cell.setBorderWidth(cellBorderWidth); table.addCell(cell); // row 4 cell = new PdfPCell(new Paragraph(new Chunk("Doc Status: " + docStatus, headerFont))); cell.setColspan(2); cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT); cell.setBorderWidth(cellBorderWidth); table.addCell(cell); /* * //row 5 cell = new PdfPCell(new Paragraph(new Chunk("Payment By: * "+paymentBy,headerFont))); cell.setColspan(2); * cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT); * cell.setBorderWidth(cellBorderWidth); table.addCell(cell); */ // row 6 cell = new PdfPCell(new Paragraph(new Chunk("Date: " + dateOrdered, headerFont))); cell.setColspan(2); cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT); cell.setBorderWidth(cellBorderWidth); table.addCell(cell); // spacing cell = new PdfPCell(new Paragraph("")); cell.setColspan(2); cell.setFixedHeight(10); cell.setBorderWidth(cellBorderWidth); table.addCell(cell); // spacing cell = new PdfPCell(new Paragraph("")); cell.setColspan(2); cell.setFixedHeight(10); cell.setBorderWidth(cellBorderWidth); table.addCell(cell); // ------------------------------------------------------ cell = new PdfPCell(); cell.setColspan(2); cell.setBorderWidth(cellBorderWidth); PdfPTable t = new PdfPTable(3); t.getDefaultCell().setPadding(3.0f); t.setWidthPercentage(100.0f); int[] widths = { 1, 10, 1 }; t.setWidths(widths); // setting headers t.addCell(new Paragraph(new Chunk("SerNo", headerFont))); t.addCell(new Paragraph(new Chunk("Name", headerFont))); t.addCell(new Paragraph(new Chunk("Qty", headerFont))); // setting table data // --------------------------------writing table // data------------------------------ int serNo = 0; BigDecimal qty = null; for (WebMinOutLineBean orderlineBean : orderLineList) { serNo++; qty = orderlineBean.getQtyOrdered(); t.addCell(new Paragraph(new Chunk(serNo + "", simpleFont))); t.addCell(new Paragraph(new Chunk(orderlineBean.getProductName(), simpleFont))); t.addCell(new Paragraph(new Chunk(qty.intValue() + "", simpleFont))); } // ----------------------------------------------------------------------------------- // table.addCell(cell); table.setSplitRows(true); document.add(table); document.add(t); } catch (Exception e) { throw new OperationException(e); } // step 5: we close the document document.close(); return reportName; }
From source file:org.posterita.businesslogic.performanceanalysis.POSReportManager.java
License:Open Source License
public static String endOfTheDayPDF(Properties ctx, CloseTillBean bean) throws OperationException { String reportName = RandomStringGenerator.randomstring() + ".pdf"; String reportPath = ReportManager.getReportPath(reportName); double beginningBalance = (bean.getBeginningBalance() == null ? 0 : bean.getBeginningBalance().doubleValue()); double statementDifference = (bean.getNetCashTrx() == null ? 0 : bean.getNetCashTrx().doubleValue()); double transferAmount = (bean.getBalanceEntered() == null ? 0 : bean.getBalanceEntered().doubleValue()); double differenceAmount = (bean.getDifference() == null ? 0 : bean.getDifference().doubleValue()); double endingBalance = (bean.getEndingBalance() == null ? 0 : bean.getEndingBalance().doubleValue()); double tillCashTotal = (bean.getCashTotal() == null ? 0 : bean.getCashTotal().doubleValue()); double cashBeanCardTotal = (bean.getCardTotal() == null ? 0 : bean.getCardTotal().doubleValue()); double tillCardTotal = (bean.getCardTotal() == null ? 0 : bean.getCardTotal().doubleValue()); double cardDifference = (bean.getCardDifference() == null ? 0 : bean.getCardDifference().doubleValue()); double cashBeanChequeTotal = (bean.getChequeTotal() == null ? 0 : bean.getChequeTotal().doubleValue()); double tillChequeTotal = (bean.getChequeTotal() == null ? 0 : bean.getChequeTotal().doubleValue()); double chequeDifference = (bean.getChequeDifference() == null ? 0 : bean.getChequeDifference().doubleValue()); double grandTotal = (bean.getGrandTotal() == null ? 0 : bean.getGrandTotal().doubleValue()); Font titleFont = new Font(Font.TIMES_ROMAN, 8, Font.BOLD); Font subtitleFont = new Font(Font.TIMES_ROMAN, 8, Font.BOLD); // Font headerFont = new Font(Font.TIMES_ROMAN, 8,Font.BOLD); Font simpleFont = new Font(Font.TIMES_ROMAN, 8); final float NO_BORDER = 0.0f; // final float THIN_BORDER = 1.0f; String currency = "Rs "; NumberFormat formatter = new DecimalFormat("###,###,##0.00"); PdfPCell cell = null;/*from ww w . j a va2 s .c om*/ // step 1: creation of a document-object Document document = new Document(PageSize.A7, 3, 3, 2, 4);// l,r,t,b // document.getPageSize().set; System.out.println(document.leftMargin()); try { currency = POSTerminalManager.getDefaultSalesCurrency(ctx).getCurSymbol(); PdfWriter.getInstance(document, new FileOutputStream(reportPath)); document.open(); PdfPTable layoutTbl = new PdfPTable(1); layoutTbl.getDefaultCell().setBorderWidth(NO_BORDER); layoutTbl.getDefaultCell().setPadding(2.0f); SimpleDateFormat sdf = new SimpleDateFormat(TimestampConvertor.DEFAULT_DATE_PATTERN1); Date today = new Date(System.currentTimeMillis()); // 1.add title Paragraph title = new Paragraph(new Chunk("End of the Day Report", titleFont)); title.setAlignment(Paragraph.ALIGN_CENTER); cell = new PdfPCell(title); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setBorderWidth(NO_BORDER); layoutTbl.addCell(cell); Paragraph subTitle = new Paragraph(new Chunk(sdf.format(today), subtitleFont)); subTitle.setAlignment(Paragraph.ALIGN_CENTER); cell = new PdfPCell(subTitle); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setBorderWidth(NO_BORDER); layoutTbl.addCell(cell); // spacing cell = new PdfPCell(new Paragraph("")); cell.setFixedHeight(10); cell.setBorderWidth(NO_BORDER); layoutTbl.addCell(cell); // display report data PdfPTable table = new PdfPTable(2); Phrase phrase = null; // row 1 phrase = new Phrase("Till No:", simpleFont); table.addCell(phrase); phrase = new Phrase(bean.getTillName(), simpleFont); table.addCell(phrase); // row 2 phrase = new Phrase("Begining Balance:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(beginningBalance), simpleFont); table.addCell(phrase); // row 3 phrase = new Phrase("Net Cash Trx:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(statementDifference), simpleFont); table.addCell(phrase); phrase = new Phrase("Till Balance Entered:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(transferAmount), simpleFont); table.addCell(phrase); phrase = new Phrase("Difference:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(differenceAmount), simpleFont); table.addCell(phrase); phrase = new Phrase("Ending Balance:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(endingBalance), simpleFont); table.addCell(phrase); phrase = new Phrase("Cash Total:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(tillCashTotal), simpleFont); table.addCell(phrase); phrase = new Phrase("Card Amt Entered:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(cashBeanCardTotal), simpleFont); table.addCell(phrase); phrase = new Phrase("Card Total:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(tillCardTotal), simpleFont); table.addCell(phrase); phrase = new Phrase("Card Difference:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(cardDifference), simpleFont); table.addCell(phrase); phrase = new Phrase("Cheque Amt Entered:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(cashBeanChequeTotal), simpleFont); table.addCell(phrase); phrase = new Phrase("Cheque Total:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(tillChequeTotal), simpleFont); table.addCell(phrase); phrase = new Phrase("Cheque Difference:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(chequeDifference), simpleFont); table.addCell(phrase); phrase = new Phrase("Grand Total:", simpleFont); table.addCell(phrase); phrase = new Phrase(currency + formatter.format(grandTotal), simpleFont); table.addCell(phrase); layoutTbl.addCell(table); document.add(layoutTbl); } catch (Exception e) { throw new OperationException(e); } document.close(); return reportName; }
From source file:org.posterita.core.CrossTabReportGenerator.java
License:Open Source License
protected void writeDocument(Document document) throws OperationException { try {//from ww w .j a va 2 s. c o m int noOfRows = dataSource.size(); String longestText = ""; int columnCount = 0; Object[] obj = null; Object[] header = (Object[]) dataSource.get(0); columnCount = header.length; PdfPTable table = new PdfPTable(columnCount); table.setWidthPercentage(100); table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE); table.getDefaultCell().setPaddingBottom(5); table.getDefaultCell().setPaddingTop(5); //adding the headers for (int i = 0; i < columnCount; i++) { if (i == 0) { longestText = header[i].toString(); table.addCell(new Paragraph(header[i].toString())); } else { Image img = getTextAsImage(header[i].toString()); img.setRotationDegrees(90); img.setAlignment(Image.ALIGN_BOTTOM); PdfPCell cell = new PdfPCell(img); cell.setPadding(4); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_BOTTOM); //cell.setBackgroundColor(new Color(0, 0, 255)); table.addCell(cell); } } //adding the data for (int j = 1; j < noOfRows; j++) { obj = (Object[]) dataSource.get(j); for (int k = 0; k < columnCount; k++) { if (k == 0) { String text = obj[0].toString(); if (new Chunk(text, HEADER_FONT).getWidthPoint() > new Chunk(longestText, HEADER_FONT) .getWidthPoint()) { longestText = text; } Chunk txtck = new Chunk(obj[0].toString(), HEADER_FONT); PdfPCell cell = new PdfPCell(new Paragraph(txtck)); if (j == noOfRows - 1) { cell.setBackgroundColor(new Color(170, 170, 170)); } cell.setHorizontalAlignment(Element.ALIGN_LEFT); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setPaddingBottom(5); cell.setPaddingTop(5); cell.setPaddingLeft(5); table.addCell(cell); } else { Chunk txtck = new Chunk(obj[k].toString(), DATA_FONT); if (k == columnCount - 1) { PdfPCell cell = new PdfPCell(new Paragraph(txtck)); cell.setBackgroundColor(new Color(170, 170, 170)); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setPaddingBottom(5); cell.setPaddingTop(5); table.addCell(cell); } else { PdfPCell cell = new PdfPCell(new Paragraph(txtck)); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setPaddingBottom(5); cell.setPaddingTop(5); if (j == noOfRows - 1) { cell.setBackgroundColor(new Color(170, 170, 170)); } table.addCell(cell); } } } } //setting table width Chunk dataChk = new Chunk("9999", DATA_FONT); Chunk headerChk = new Chunk(longestText, HEADER_FONT); float dataChkLength = dataChk.getWidthPoint() + 2 * CELLPADDING; float headerChkLength = headerChk.getWidthPoint() + 2 * CELLPADDING; float tableWidth = headerChkLength + dataChkLength * columnCount; float actualTableWidth = document.getPageSize().getWidth() - 2 * MARGIN; float columnWidth = dataChkLength; if (tableWidth < actualTableWidth) { columnWidth = (actualTableWidth - headerChkLength) / (columnCount - 1); } float[] widths = new float[columnCount]; widths[0] = headerChkLength + 2 * CELLPADDING; for (int i = 1; i < columnCount; i++) { widths[i] = columnWidth; } table.setWidths(widths); //writing the table document.add(table); } catch (DocumentException e) { throw new OperationException(e); } }
From source file:org.posterita.core.CrossTabReportGenerator.java
License:Open Source License
protected Rectangle getDocumentDimension() { Document document = new Document(PAGE_SIZE, MARGIN, MARGIN, MARGIN, MARGIN); String longestText = ""; int columnCount = 0; Object[] obj = null;/*w w w .j a va2s .com*/ //Getting column count obj = (Object[]) dataSource.get(0); columnCount = obj.length; //Getting longest text Iterator iter = dataSource.iterator(); while (iter.hasNext()) { obj = (Object[]) iter.next(); String header = obj[0].toString(); if (header.length() > longestText.length()) { longestText = header; } } //setting the table width Chunk dataChk = new Chunk("9999", DATA_FONT); Chunk headerChk = new Chunk(longestText, HEADER_FONT); float dataChkLength = dataChk.getWidthPoint() + 2 * CELLPADDING; float headerChkLength = headerChk.getWidthPoint() + 2 * CELLPADDING; float tableWidth = headerChkLength + dataChkLength * columnCount; float actualTableWidth = document.getPageSize().getWidth() - 2 * MARGIN; //float actualTableHeight = document.getPageSize().height() - 2*MARGIN; //if the table size is greater than that of the page we should //scale the page if (tableWidth > actualTableWidth) { float documentWidth = document.getPageSize().getWidth(); float documentHeight = document.getPageSize().getHeight(); float newDocumentWidth = tableWidth + 2 * MARGIN; float newDocumentHeight = (documentHeight * newDocumentWidth) / documentWidth; return new Rectangle(newDocumentWidth, newDocumentHeight); } return document.getPageSize(); }
From source file:org.posterita.core.PDFReportGenerator.java
License:Open Source License
public String getPDFReport(Properties ctx, ArrayList dataSource) throws OperationException { String filename = RandomStringGenerator.randomstring() + ".pdf"; String dir = UDIFilePropertiesManager.getProperty().get(ctx, PropertiesConstant.UDI_HOME) + "/config/reports/pdf/"; String filepath = dir + filename; //Generatting report //Initialising the datasource this.dataSource = dataSource; if (dataSource == null) throw new OperationException("Cannot generate report! Cause: empty datasource"); Rectangle dimension = getDocumentDimension(); Document document = new Document(dimension, MARGIN, MARGIN, MARGIN, MARGIN); try {//from w w w . j a v a 2 s. c o m writer = PdfWriter.getInstance(document, new FileOutputStream(filepath)); writer.setPageEvent(new PDFReportPageEventHelper()); document.open(); //Add the title part Paragraph title = new Paragraph(); Paragraph subTitle = new Paragraph(); if (reportTitle != null) { title.add(new Chunk(reportTitle, TITLE_FONT)); title.setAlignment(Element.ALIGN_CENTER); document.add(title); } if (reportSubTitle != null) { subTitle.add(new Chunk(reportSubTitle, SUBTITLE_FONT)); subTitle.setAlignment(Element.ALIGN_CENTER); document.add(subTitle); } if ((reportSubTitle != null) || (reportTitle != null)) { document.add(new Paragraph(" ")); } writeDocument(document); document.close(); writer.close(); return "config/report/pdf/" + filename; } catch (Exception e) { throw new OperationException(e); } }
From source file:org.posterita.core.SimpleReportGenerator.java
License:Open Source License
protected void writeDocument(Document document) throws OperationException { int columnCount = 0; Object[] obj = null;/*from w ww . java 2s . com*/ Iterator iter = dataSource.iterator(); try { if (iter.hasNext()) { obj = (Object[]) iter.next(); columnCount = obj.length; table = new PdfPTable(columnCount); for (int i = 0; i < columnCount; i++) { Paragraph p = new Paragraph(new Chunk(obj[i].toString(), HEADER_FONT)); PdfPCell cell = new PdfPCell(p); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); } //table.endHeaders(); } while (iter.hasNext()) { obj = (Object[]) iter.next(); for (int i = 0; i < columnCount; i++) { Paragraph p = new Paragraph(new Chunk(obj[i].toString(), HEADER_FONT)); PdfPCell cell = new PdfPCell(p); table.addCell(cell); } } table.setWidths(columnWidth); document.add(table); } catch (Exception e) { throw new OperationException(e); } }
From source file:org.posterita.core.SimpleReportGenerator.java
License:Open Source License
protected Rectangle getDocumentDimension() { if (dataSource == null) return PAGE_SIZE; Iterator iter = dataSource.iterator(); int columnCount = 0; Object[] obj = null;/*from ww w . j a v a2s .c om*/ if (iter.hasNext()) { obj = (Object[]) iter.next(); columnCount = obj.length; columnWidth = new float[columnCount]; for (int i = 0; i < columnCount; i++) { columnWidth[i] = new Chunk(obj[i].toString(), HEADER_FONT).getWidthPoint(); } } while (iter.hasNext()) { obj = (Object[]) iter.next(); columnCount = obj.length; for (int i = 0; i < columnCount; i++) { if (obj[i] == null) obj[i] = ""; float dataWidth = new Chunk(obj[i].toString(), DATA_FONT).getWidthPoint(); if (dataWidth > columnWidth[i]) columnWidth[i] = dataWidth; } } float tableWidth = 0.0f; for (int j = 0; j < columnWidth.length; j++) { tableWidth += (columnWidth[j] + 2 * CELLPADDING); } float actualTableWidth = PAGE_SIZE.getWidth() - 2 * MARGIN; //float actualTableHeight = PAGE_SIZE.height() - 2*MARGIN; //if the table size is greater than that of the page we should //scale the page if (tableWidth > actualTableWidth) { float documentWidth = PAGE_SIZE.getWidth(); float documentHeight = PAGE_SIZE.getHeight(); float newDocumentWidth = tableWidth + 2 * MARGIN; float newDocumentHeight = (documentHeight * newDocumentWidth) / documentWidth; return new Rectangle(newDocumentWidth, newDocumentHeight); } else { float scaleFactor = (actualTableWidth * tableWidth) / tableWidth; for (int k = 0; k < columnWidth.length; k++) { tableWidth *= scaleFactor; } return PAGE_SIZE; } }
From source file:org.posterita.core.TabularReport.java
License:Open Source License
public String createPDFReport() throws DocumentException, FileNotFoundException { String filename = RandomStringGenerator.randomstring() + ".pdf"; String filepath = ReportManager.getReportPath(filename); FileOutputStream fos = new FileOutputStream(filepath); Document document = new Document(PageSize.A4); PdfWriter pdfWriter = PdfWriter.getInstance(document, fos); document.open();/*from ww w . ja v a 2 s . c o m*/ Font style1 = new Font(Font.HELVETICA, 16.0f, Font.BOLD); Font style2 = new Font(Font.HELVETICA, 12.0f); //write content Paragraph p = new Paragraph(new Chunk(title, style1)); p.setAlignment(Element.ALIGN_CENTER); document.add(p); p = new Paragraph(new Chunk(subtitle, style2)); p.setAlignment(Element.ALIGN_CENTER); document.add(p); p = new Paragraph("\n\n"); document.add(p); Object[] headers = reportData.get(0); PdfPTable table = new PdfPTable(headers.length); for (Object[] row : reportData) { for (Object data : row) { PdfPCell cell = new PdfPCell(new Phrase(data.toString())); table.addCell(cell); } } document.add(table); document.close(); return filename; }
From source file:org.posterita.core.TabularReport.java
License:Open Source License
/** * Get Selling Items Data//from www .j a va2 s . c o m * @return * @throws DocumentException * @throws OperationException */ public byte[] getSellingItemsData() throws DocumentException, OperationException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); Document document = new Document(PageSize.A4); PdfWriter pdfWriter = PdfWriter.getInstance(document, bos); document.open(); // Font Syle Font style1 = new Font(Font.TIMES_ROMAN, 12.0f, Font.BOLD); Font style2 = new Font(Font.TIMES_ROMAN, 8.0f, Font.BOLD); Font style3 = new Font(Font.TIMES_ROMAN, 8.0f); Font style4 = new Font(Font.TIMES_ROMAN, 9.0f, Font.BOLD); Font style5 = new Font(Font.TIMES_ROMAN, 6.0f); float[] widths = { 2f, 0.5f, 0.5f, 1.0f }; // Table header PdfPTable mytable = new PdfPTable(4); mytable.setTotalWidth(widths); mytable.setWidthPercentage(100f); PdfPCell header = new PdfPCell(new Paragraph( new Chunk(getTitle(), style1) + "\n" + new Chunk(getSubtitle(), style2) + "\n", style1)); header.setColspan(4); header.setHorizontalAlignment(Element.ALIGN_CENTER); header.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0)); mytable.addCell(header); //Date Header PdfPCell dateHeader = new PdfPCell(new Paragraph( "From : " + new Chunk(TimestampConvertor.convertTimeStampToFyracleDate(fromDate), style1), style1)); dateHeader.setColspan(1); dateHeader.setHorizontalAlignment(Element.ALIGN_LEFT); dateHeader.setBackgroundColor(Color.GRAY); dateHeader.setBorderColor(Color.WHITE); mytable.addCell(dateHeader); dateHeader = new PdfPCell(new Paragraph( "To : " + new Chunk(TimestampConvertor.convertTimeStampToFyracleDate(toDate), style1), style1)); dateHeader.setColspan(3); dateHeader.setHorizontalAlignment(Element.ALIGN_LEFT); dateHeader.setBackgroundColor(Color.GRAY); dateHeader.setBorderColor(Color.WHITE); mytable.addCell(dateHeader); // Info Header PdfPCell infoHeader = new PdfPCell( new Paragraph("ALL VALUES ARE EXCLUSIVE OF VAT - SALES FIGURES ARE TAKEN AFTER DISCOUNT", style5)); infoHeader.setColspan(4); infoHeader.setHorizontalAlignment(Element.ALIGN_CENTER); infoHeader.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0)); mytable.addCell(infoHeader); // Rows Header PdfPCell rowHeader = new PdfPCell(new Paragraph("PRODUCT NAME", style4)); rowHeader.setHorizontalAlignment(Element.ALIGN_LEFT); mytable.addCell(rowHeader); rowHeader = new PdfPCell(new Paragraph("QTY", style4)); rowHeader.setHorizontalAlignment(Element.ALIGN_LEFT); mytable.addCell(rowHeader); rowHeader = new PdfPCell(new Paragraph("VALUE", style4)); rowHeader.setHorizontalAlignment(Element.ALIGN_LEFT); mytable.addCell(rowHeader); rowHeader = new PdfPCell(new Paragraph("SUPPLIER", style4)); rowHeader.setHorizontalAlignment(Element.ALIGN_LEFT); mytable.addCell(rowHeader); document.add(mytable); Object[] headers = reportData.get(0); PdfPTable table = new PdfPTable(headers.length); table.setTotalWidth(widths); table.setWidthPercentage(100f); for (Object[] row : reportData) { for (Object data : row) { PdfPCell dataCell = new PdfPCell(new Phrase(data.toString(), style3)); table.addCell(dataCell); } } document.add(table); document.close(); return bos.toByteArray(); }
From source file:org.posterita.core.TabularReport.java
License:Open Source License
/** * Get Stock Enquiry Report Data//from w ww .j a v a 2 s. c o m * @return * @throws DocumentException * @throws OperationException */ public byte[] getStockEnquiryData() throws DocumentException, OperationException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); Document document = new Document(PageSize.A4); PdfWriter pdfWriter = PdfWriter.getInstance(document, bos); document.open(); // Font Syle Font style1 = new Font(Font.TIMES_ROMAN, 12.0f, Font.BOLD); Font style2 = new Font(Font.TIMES_ROMAN, 8.0f, Font.BOLD); Font style3 = new Font(Font.TIMES_ROMAN, 8.0f); Font style4 = new Font(Font.TIMES_ROMAN, 7.0f, Font.BOLD); Font style5 = new Font(Font.TIMES_ROMAN, 6.0f); float[] widths = { 1f, 2f, 0.5f, 0.5f, 0.5f, 0.5f }; // Table header PdfPTable mytable = new PdfPTable(6); mytable.setTotalWidth(widths); mytable.setWidthPercentage(100f); PdfPCell header = new PdfPCell( new Paragraph(new Chunk(title, style1) + "\n" + new Chunk(subtitle, style2) + "\n", style1)); header.setColspan(6); header.setHorizontalAlignment(Element.ALIGN_CENTER); header.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0)); mytable.addCell(header); //Date Header PdfPCell dateHeader = new PdfPCell(new Paragraph( "From : " + new Chunk(TimestampConvertor.convertTimeStampToFyracleDate(fromDate), style1), style1)); dateHeader.setColspan(2); dateHeader.setHorizontalAlignment(Element.ALIGN_LEFT); dateHeader.setBackgroundColor(Color.GRAY); dateHeader.setBorderColor(Color.WHITE); mytable.addCell(dateHeader); dateHeader = new PdfPCell(new Paragraph( "To : " + new Chunk(TimestampConvertor.convertTimeStampToFyracleDate(toDate), style1), style1)); dateHeader.setColspan(4); dateHeader.setHorizontalAlignment(Element.ALIGN_LEFT); dateHeader.setBackgroundColor(Color.GRAY); dateHeader.setBorderColor(Color.WHITE); mytable.addCell(dateHeader); // Info Header PdfPCell infoHeader = new PdfPCell( new Paragraph("ALL VALUES ARE EXCLUSIVE OF VAT & BASED ON PURCHASE PRICES", style5)); infoHeader.setColspan(6); infoHeader.setHorizontalAlignment(Element.ALIGN_CENTER); infoHeader.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0)); mytable.addCell(infoHeader); // Rows Header PdfPCell rowHeader = new PdfPCell(new Paragraph("BARCODE", style4)); rowHeader.setHorizontalAlignment(Element.ALIGN_LEFT); mytable.addCell(rowHeader); rowHeader = new PdfPCell(new Paragraph("PRODUCT NAME", style4)); rowHeader.setHorizontalAlignment(Element.ALIGN_LEFT); mytable.addCell(rowHeader); rowHeader = new PdfPCell(new Paragraph("Opening Stock Qty", style4)); rowHeader.setHorizontalAlignment(Element.ALIGN_LEFT); mytable.addCell(rowHeader); rowHeader = new PdfPCell(new Paragraph("Opening Stock Value", style4)); rowHeader.setHorizontalAlignment(Element.ALIGN_LEFT); mytable.addCell(rowHeader); rowHeader = new PdfPCell(new Paragraph("Closing Stock Qty", style4)); rowHeader.setHorizontalAlignment(Element.ALIGN_LEFT); mytable.addCell(rowHeader); rowHeader = new PdfPCell(new Paragraph("Closing Stock Value", style4)); rowHeader.setHorizontalAlignment(Element.ALIGN_LEFT); mytable.addCell(rowHeader); document.add(mytable); Object[] headers = reportData.get(0); PdfPTable table = new PdfPTable(headers.length); table.setTotalWidth(widths); table.setWidthPercentage(100f); for (Object[] row : reportData) { for (Object data : row) { PdfPCell dataCell = new PdfPCell(new Phrase(data.toString(), style3)); table.addCell(dataCell); } } document.add(table); document.close(); return bos.toByteArray(); }