public void beforeDisplayReportDataPerRow(
     ReportRequest rrequest, ReportBean rbean, RowDataBean rowDataBean) {
   if (rowDataBean.getRowindex() < 0) { // 当前正在显示标题部分
     /** 下面在数据标题行前面插入一行动态的标题行 */
     String insertedHtml =
         "<tr><td colspan='"
             + rowDataBean.getColspans()
             + "' align='center' bgcolor='#dddddd'><font size='3'><b>动态插入的报表标题行</b></font></td></tr>";
     rowDataBean.setInsertDisplayRowHtml(insertedHtml);
   } else if (rowDataBean.getRowindex() == Integer.MAX_VALUE) { // 当前是显示完最后一行记录后的调用
     String insertedHtml = "<tr>";
     for (int i = 0; i < rowDataBean.getColspans(); i++) {
       System.out.println(i + "|||" + ((ColBean) rowDataBean.getLstColBeans().get(i)));
       insertedHtml +=
           "<td align='center' bgcolor='#dddddd'><font size='3'><b>"
               + ((ColBean) rowDataBean.getLstColBeans().get(i)).getLabel(rrequest)
               + "</b></font></td>";
     }
     insertedHtml += "</tr>";
     rowDataBean.setInsertDisplayRowHtml(insertedHtml);
   } else { // 显示数据行
     AbsReportType reportTypeObj = rrequest.getDisplayReportTypeObj(rbean.getId());
     List<AbsReportDataPojo> lstData = reportTypeObj.getLstReportData(); // 所有报表数据的容器
     if (lstData.size() > 0) { // 报表有数据
       Object dataObj = lstData.get(rowDataBean.getRowindex()); // 取到即将显示记录的数据对象
       String currentSex = (String) rowDataBean.getColData("sex"); // 取到当前记录的性别列
       currentSex = currentSex == null ? "" : currentSex.trim();
       String displayedsex =
           reportTypeObj.getReportRequest().getStringAttribute("DISPLAYED_SEX"); // 上一条记录显示的性别
       if (displayedsex == null
           || !displayedsex.equals(
               currentSex)) { // 如果还没有显示记录,或者当前正要显示的记录的性别和上一条不是同一个性别,则说明开始显示新的性别的记录(这是因为查询报表的SQL语句中已经按性别排了序)
         reportTypeObj
             .getReportRequest()
             .setAttribute("DISPLAYED_SEX", currentSex); // 存下当前记录显示的性别,以便后面显示其它记录时比较
         int[] tmp = getRecordCntAndTotalAges(reportTypeObj, lstData, currentSex);
         float avgage = 0;
         if (tmp[0] > 0) avgage = tmp[1] / tmp[0];
         StringBuffer insertedHtmlBuf = new StringBuffer();
         insertedHtmlBuf.append(
             "<tr><td colspan='"
                 + rowDataBean.getColspans()
                 + "' align='center' bgcolor='#eeeeee'>");
         insertedHtmlBuf.append("<font size='3'><b>" + currentSex + "性员工列表</b></font>");
         insertedHtmlBuf.append("&nbsp;&nbsp;&nbsp;&nbsp;【记录数:" + tmp[0] + ";平均年龄" + avgage + "】");
         insertedHtmlBuf.append("</td></tr>");
         rowDataBean.setInsertDisplayRowHtml(insertedHtmlBuf.toString());
       }
     }
   }
 }
コード例 #2
0
 /** 当报表没有配置PDF模板时,此方法在显示完每页PDF后执行 现在在此方法中演示显示完每页后向其中添加一个图片 */
 public void afterDisplayPdfPageWithoutTemplate(Document document, AbsReportType reportTypeObj) {
   super.afterDisplayPdfPageWithoutTemplate(document, reportTypeObj);
   ReportRequest rrequest = reportTypeObj.getReportRequest();
   String serverName = rrequest.getRequest().getServerName();
   String serverPort = String.valueOf(rrequest.getRequest().getServerPort());
   String imgurl =
       "http://"
           + serverName
           + ":"
           + serverPort
           + Config.webroot
           + "wabacusdemo/pdftemplate/logo.gif"; // 构造要添加图片的URL
   try {
     Image img = Image.getInstance(imgurl);
     float width = document.getPageSize().getWidth();
     float height = document.getPageSize().getHeight();
     // width = width - img.getWidth();
     img.setAbsolutePosition(width / 2, height / 2 + 300f);
     img.setAlignment(Image.ALIGN_CENTER);
     document.add(img);
   } catch (Exception e) {
     e.printStackTrace();
   }
 }