Exemplo n.º 1
0
 /*
  * (non-Javadoc)
  *
  * @see com.afunms.report.ExportInterface#insertTable(java.util.ArrayList)
  */
 public void insertTable(ArrayList<String[]> tableal) throws Exception {
   // step 3: we open the document
   if (!document.isOpen()) {
     document.open();
   }
   Table pdfTable = new Table(tableal.get(0).length);
   for (int k = 0; k < tableal.size(); k++) {
     String[] row = tableal.get(k);
     for (int j = 0; j < row.length; j++) {
       Cell pdfcell = new Cell();
       if (k == 0) {
         pdfcell.addElement(new Paragraph(row[j], FontChineseTitle));
         pdfcell.setBackgroundColor(Color.gray);
         pdfTable.endHeaders();
       } else {
         pdfcell.addElement(new Paragraph(row[j], FontChineseRow));
         if (k % 2 == 0) {
           pdfcell.setBackgroundColor(Color.LIGHT_GRAY);
         }
       }
       // 合并单元格
       // pdfcell.setColspan(1);
       // pdfcell.setRowspan(1);
       // 对齐方式
       pdfcell.setHorizontalAlignment(Element.ALIGN_CENTER);
       pdfcell.setVerticalAlignment(Element.ALIGN_MIDDLE);
       pdfTable.addCell(pdfcell);
     }
   }
   pdfTable.setWidth(100);
   // 设置表格填距
   pdfTable.setPadding(5);
   pdfTable.setAlignment(Element.ALIGN_CENTER);
   // pdfTable.setTableFitsPage(true);
   document.add(pdfTable);
   // step 5: we close the document
 }
Exemplo n.º 2
0
  /**
   * Shows how a table is split if it doesn't fit the page.
   *
   * @param args no arguments needed
   */
  public static void main(String[] args) {
    System.out.println("table splitting");
    // creation of the document with a certain size and certain margins
    Document document = new Document(PageSize.A4.rotate(), 50, 50, 50, 50);

    try {
      // creation of the different writers
      PdfWriter.getInstance(document, new FileOutputStream("repeatingtable.pdf"));

      // we add some meta information to the document
      document.addAuthor("Alan Soukup");
      document.addSubject("This is the result of a Test.");

      document.open();

      Table datatable = new Table(10);

      int headerwidths[] = {10, 24, 12, 12, 7, 7, 7, 7, 7, 7};
      datatable.setWidths(headerwidths);
      datatable.setWidth(100);
      datatable.setPadding(3);

      // the first cell spans 10 columns
      Cell cell =
          new Cell(
              new Phrase(
                  "Administration -System Users Report",
                  FontFactory.getFont(FontFactory.HELVETICA, 24, Font.BOLD)));
      cell.setHorizontalAlignment(Element.ALIGN_CENTER);
      cell.setLeading(30);
      cell.setColspan(10);
      cell.setBorder(Rectangle.NO_BORDER);
      cell.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0));
      datatable.addCell(cell);

      // These cells span 2 rows
      datatable.getDefaultCell().setBorderWidth(2);
      datatable.getDefaultCell().setHorizontalAlignment(1);
      datatable.addCell("User Id");
      datatable.addCell("Name\nAddress");
      datatable.addCell("Company");
      datatable.addCell("Department");
      datatable.addCell("Admin");
      datatable.addCell("Data");
      datatable.addCell("Expl");
      datatable.addCell("Prod");
      datatable.addCell("Proj");
      datatable.addCell("Online");

      // this is the end of the table header
      datatable.endHeaders();

      datatable.getDefaultCell().setBorderWidth(1);

      for (int i = 1; i < 30; i++) {

        datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);

        datatable.addCell("myUserId");
        datatable.addCell(
            "Somebody with a very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very long long name");
        datatable.addCell("No Name Company");
        datatable.addCell("D" + i);

        datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
        datatable.addCell("No");
        datatable.addCell("Yes");
        datatable.addCell("No");
        datatable.addCell("Yes");
        datatable.addCell("No");
        datatable.addCell("Yes");
      }
      document.add(new Paragraph("com.lowagie.text.Table - Cells split"));
      document.add(datatable);
      document.newPage();
      document.add(new Paragraph("com.lowagie.text.pdf.PdfPTable - Cells split\n\n"));
      datatable.setConvert2pdfptable(true);
      document.add(datatable);
      document.newPage();
      document.add(new Paragraph("com.lowagie.text.Table - Cells kept together"));
      datatable.setConvert2pdfptable(false);
      datatable.setCellsFitPage(true);
      document.add(datatable);
      document.newPage();
      document.add(new Paragraph("com.lowagie.text.pdf.PdfPTable - Cells kept together\n\n"));
      datatable.setConvert2pdfptable(true);
      document.add(datatable);
    } catch (Exception e) {
      e.printStackTrace();
    }

    // we close the document
    document.close();
  }
Exemplo n.º 3
0
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    WebApplicationContext ctx =
        WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());

    CourseManager manager = (CourseManager) ctx.getBean("courseManager");
    HttpSession session = request.getSession(false);

    List selectFilterCouList = (List) session.getAttribute("selectFilterCouList");

    Date date = new Date();
    DateFormat dateFormat = new SimpleDateFormat("yyyy年 MM月 dd日 HH:mm");

    String stuTmp[] = new String[selectFilterCouList.size()];
    List students = new ArrayList();

    for (int i = 0; i < selectFilterCouList.size(); i++) {
      stuTmp[i] = ((Map) selectFilterCouList.get(i)).get("dtimeOid").toString();
    }
    students = manager.getSeldStuFilterBy(stuTmp, true);

    Document document = new Document(PageSize.A4, 72, 72, 35, 35);
    ByteArrayOutputStream ba = new ByteArrayOutputStream();

    String year = manager.getNowBy("School_year");
    String term = manager.getNowBy("School_term");

    // 如果是下學期, 學年要+1
    if (Integer.parseInt(term) == 2) {
      Integer tmpYear = (Integer.parseInt(year) + 1);
      year = tmpYear.toString();
      term = "1";
    } else {
      term = "2";
    }

    try {

      PdfWriter writer = PdfWriter.getInstance(document, ba);
      // TODO 路徑

      // Image
      // image=Image.getInstance("http://cap.chit.edu.tw/CIS/pages/images/2002chitWatermark.gif");
      // Watermark wamark=new Watermark(image, ((PageSize.A4).width()-image.plainHeight())/2,
      // ((PageSize.A4).height()-image.plainHeight())/2);
      // document.add(wamark);

      Phrase now = doEncode("課程管理系統 " + dateFormat.format(date));
      HeaderFooter header = new HeaderFooter(now, false);
      document.setHeader(header);
      document.setFooter(header);

      // Image logo=Image.getInstance("http://192.192.231.32:8080/CIS/pages/images/art.gif");
      document.open();

      for (int i = 0; i < students.size(); i++) {

        String buf[] = {((Map) students.get(i)).get("student_no").toString()};
        List tmp = manager.getSeldStuFilterBy(buf, false);

        if (i % 2 != 0) {
          document.add(new Paragraph(doEncode("\n")));
          document.add(new Paragraph(doEncode("\n")));
          document.add(new Paragraph(doEncode("\n")));
        }

        document.add(new Paragraph(""));

        Table table = new Table(6);
        table.setWidth(100);

        table.setBorderWidth(0);
        table.setPadding(5);
        // table.setSpacing(5);
        // table.setDefaultHorizontalAlignment(table.ALIGN_CENTER);
        // table.setDefaultHorizontalAlignment(table.ALIGN_MIDDLE);

        // table.setDefaultCellBorderColor(new Color(255, 255, 255));

        Cell cell = new Cell();
        cell.add(doEncode(year));
        cell.add(doEncode("學年 第"));
        cell.add(doEncode(term));
        cell.add(doEncode("學期 網路預選失敗通知單"));
        // cell.addElement(logo);
        cell.setColspan(6);
        cell.setHorizontalAlignment(cell.ALIGN_CENTER);
        cell.setBorderColor(new Color(255, 255, 255));
        table.addCell(cell);

        // ((Map)students.get(i)).get("ClassName2");

        cell = new Cell();
        // cell.add(doEncode("學生班級: "));
        cell.add(doEncode(((Map) students.get(i)).get("ClassName").toString()));
        cell.add(doEncode("\t學號: "));
        cell.add(doEncode(((Map) students.get(i)).get("student_no").toString()));
        cell.add(doEncode("\t姓名: "));
        cell.add(doEncode(((Map) students.get(i)).get("student_name").toString()));

        cell.setColspan(6);
        cell.setHorizontalAlignment(cell.ALIGN_LEFT);
        cell.setBorderColor(new Color(255, 255, 255));
        table.addCell(cell);

        cell = new Cell();
        cell.add(doEncode("您在第一階段網路選課所選的下列課程並未成功,請按照規定時間進行網路第二階段選課,以免影響您的權益。"));

        cell.setColspan(6);
        cell.setHorizontalAlignment(cell.ALIGN_LEFT);
        cell.setBorderColor(new Color(255, 255, 255));
        table.addCell(cell);

        document.add(table);

        float[] widths = {0.2f, 0.3f, 0.1f, 0.1f, 0.1f, 0.2f};
        PdfPTable tables = new PdfPTable(widths);
        tables.setWidthPercentage(100);

        PdfPCell cells = new PdfPCell(doEncode("開課班級"));
        tables.addCell(cells);

        cells = new PdfPCell(doEncode("科目名稱"));
        tables.addCell(cells);
        cells = new PdfPCell(doEncode("選別"));
        tables.addCell(cells);
        cells = new PdfPCell(doEncode("學分"));
        tables.addCell(cells);
        cells = new PdfPCell(doEncode("時數"));
        tables.addCell(cells);
        cells = new PdfPCell(doEncode("上課時間"));
        tables.addCell(cells);

        for (int j = 0; j < tmp.size(); j++) {
          cells = new PdfPCell();
          cells = new PdfPCell(doEncode(((Map) tmp.get(j)).get("ClassName2").toString()));
          tables.addCell(cells);
          cells = new PdfPCell(doEncode(((Map) tmp.get(j)).get("chi_name").toString()));
          tables.addCell(cells);
          cells = new PdfPCell(doEncode(getOpt(((Map) tmp.get(j)).get("opt").toString())));
          tables.addCell(cells);
          cells = new PdfPCell(doEncode(((Map) tmp.get(j)).get("credit").toString()));
          tables.addCell(cells);
          cells = new PdfPCell(doEncode(((Map) tmp.get(j)).get("thour").toString()));
          tables.addCell(cells);

          List dcTmp =
              manager.getDtimeClassListForOpenCourse(((Map) tmp.get(j)).get("dtimeOid").toString());

          StringBuffer strBuf = new StringBuffer();
          DtimeClass dtimeClass;
          for (int x = 0; x < dcTmp.size(); x++) {
            dtimeClass = (DtimeClass) dcTmp.get(x);
            strBuf.append("週" + dtimeClass.getWeek() + ":");
            strBuf.append(dtimeClass.getBegin() + "~" + dtimeClass.getEnd() + " ");
          }

          cells = new PdfPCell(doEncode(strBuf.toString()));
          tables.addCell(cells);
        }

        for (int k = 13; k > tmp.size(); k--) {
          cells = new PdfPCell(doEncode("\t"));
          tables.addCell(cells);
          cells = new PdfPCell(doEncode("\t"));
          tables.addCell(cells);
          cells = new PdfPCell(doEncode("\t"));
          tables.addCell(cells);
          cells = new PdfPCell(doEncode("\t"));
          tables.addCell(cells);
          cells = new PdfPCell(doEncode("\t"));
          tables.addCell(cells);
          cells = new PdfPCell(doEncode("\t"));
          tables.addCell(cells);
        }

        document.add(tables);

        if (i % 2 == 1) {
          document.newPage();
        }
      }

    } catch (DocumentException de) {
      de.printStackTrace();
      System.err.println("A Document error:" + de.getMessage());
    }

    document.close();
    response.setContentType("application/pdf");
    response.setContentLength(ba.size());
    ServletOutputStream out = response.getOutputStream();
    ba.writeTo(out);
    ba.close();
    out.flush();
    out.close();
  }
 /**
  * Creates a Table object based on this TableAttributes object.
  *
  * @return a com.lowagie.text.Table object
  * @throws BadElementException
  */
 public Table createTable() throws BadElementException {
   if (content.isEmpty()) throw new BadElementException("Trying to create a table without rows.");
   SimpleCell row = (SimpleCell) content.get(0);
   SimpleCell cell;
   int columns = 0;
   for (Iterator i = row.getContent().iterator(); i.hasNext(); ) {
     cell = (SimpleCell) i.next();
     columns += cell.getColspan();
   }
   float[] widths = new float[columns];
   float[] widthpercentages = new float[columns];
   Table table = new Table(columns);
   table.setAlignment(alignment);
   table.setSpacing(cellspacing);
   table.setPadding(cellpadding);
   table.cloneNonPositionParameters(this);
   int pos;
   for (Iterator rows = content.iterator(); rows.hasNext(); ) {
     row = (SimpleCell) rows.next();
     pos = 0;
     for (Iterator cells = row.getContent().iterator(); cells.hasNext(); ) {
       cell = (SimpleCell) cells.next();
       table.addCell(cell.createCell(row));
       if (cell.getColspan() == 1) {
         if (cell.getWidth() > 0) widths[pos] = cell.getWidth();
         if (cell.getWidthpercentage() > 0) widthpercentages[pos] = cell.getWidthpercentage();
       }
       pos += cell.getColspan();
     }
   }
   float sumWidths = 0f;
   for (int i = 0; i < columns; i++) {
     if (widths[i] == 0) {
       sumWidths = 0;
       break;
     }
     sumWidths += widths[i];
   }
   if (sumWidths > 0) {
     table.setWidth(sumWidths);
     table.setLocked(true);
     table.setWidths(widths);
   } else {
     for (int i = 0; i < columns; i++) {
       if (widthpercentages[i] == 0) {
         sumWidths = 0;
         break;
       }
       sumWidths += widthpercentages[i];
     }
     if (sumWidths > 0) {
       table.setWidths(widthpercentages);
     }
   }
   if (width > 0) {
     table.setWidth(width);
     table.setLocked(true);
   } else if (widthpercentage > 0) {
     table.setWidth(widthpercentage);
   }
   return table;
 }
  // int sportId = 1;
  public void SelPlaWD(String filePath, String fileName) {

    SelectPlayerDAO sd = new SelectPlayerDAO();
    // ArrayList departList = new ArrayList();
    ArrayList stuDepartList = new ArrayList();
    ArrayList teaDepartList = new ArrayList();
    // ArrayList selectSportsid=new ArrayList();
    // departList=sd.selectDepartment(sportId);
    // selectSportsid=sd.selectSportsid();

    stuDepartList = sd.slectStuDepidBySid(sportId);
    teaDepartList = sd.selectDepartment(sportId);
    Document document = new Document(PageSize.A4);
    try {
      RtfWriter2.getInstance(document, new FileOutputStream(filePath + fileName));

      document.open();

      for (int i = 0; i < stuDepartList.size(); i++) {

        int id = Integer.parseInt(stuDepartList.get(i).toString());
        // int sid = Integer.parseInt(selectSportsid.get(i).toString());
        ArrayList playBoy = new ArrayList();
        ArrayList playGirl = new ArrayList();
        // ArrayList playTeacher = new ArrayList();
        // int type=sd.selectDepartmentType(id);
        // if(type==1){
        // 查询学生男子组的姓名和号码
        playBoy = sd.selectPlayersByDept(1, id, sportId);
        String groupname = "男子组";
        String departname = sd.selectDepartmentName(id);
        Paragraph p =
            new Paragraph(departname, new Font(Font.BOLD, 18, Font.BOLD, new Color(0, 0, 0)));
        p.setAlignment(1);
        document.add(p);
        // document.add(new Paragraph(groupname));
        Table table = new Table(8);
        Cell cc5 = new Cell(groupname);

        cc5.setColspan(8);
        cc5.setBorderWidth(0);
        table.addCell(cc5);

        // 指定表格为八列

        table.setBorder(0);
        table.setBorderWidth(0);
        table.setBorderColor(Color.WHITE);
        table.setPadding(0);
        table.setSpacing(0);
        for (int a = 0; a < playBoy.size(); a++) {
          PlayerPojo pojp = (PlayerPojo) playBoy.get(a);

          Cell cc = new Cell(pojp.getPlayernum());
          cc.setBorderWidth(0);
          table.addCell(cc);
          Cell ce = new Cell(pojp.getPlayername());
          ce.setBorderWidth(0);
          table.addCell(ce);
        }

        // document.add(p1);
        document.add(table);
        // 查询学生女子组的姓名和号码
        Table table1 = new Table(8);
        // 指定表格为八列
        table1.setBorder(0);
        table1.setBorderWidth(0);
        table1.setBorderColor(Color.WHITE);
        table1.setPadding(0);
        table1.setSpacing(0);
        playGirl = sd.selectPlayersByDept(0, id, sportId);
        String groupname1 = "女子组";
        // document.add(new Paragraph(groupname1));

        Cell cc6 = new Cell(groupname1);
        cc6.setColspan(8);
        cc6.setBorderWidth(0);
        table1.addCell(cc6);

        for (int a = 0; a < playGirl.size(); a++) {
          PlayerPojo pojp = (PlayerPojo) playGirl.get(a);
          Cell cc1 = new Cell(pojp.getPlayernum());
          cc1.setBorderWidth(0);
          table1.addCell(cc1);
          Cell ce1 = new Cell(pojp.getPlayername());
          ce1.setBorderWidth(0);
          table1.addCell(ce1);
        }
        document.add(table1);
        document.add(new Paragraph());
        document.add(new Paragraph());
        // } else{
      }
      for (int i = 0; i < teaDepartList.size(); i++) {
        int id = Integer.parseInt(teaDepartList.get(i).toString());
        ArrayList playTeacher = sd.selectPlayersByDept1(id, sportId);

        String groupname = "教工组";
        String departname = sd.selectDepartmentName(id);
        Paragraph p =
            new Paragraph(departname, new Font(Font.BOLD, 18, Font.BOLD, new Color(0, 0, 0)));
        p.setAlignment(1);
        document.add(p);
        // document.add(new Paragraph(groupname));
        Table table2 = new Table(8);
        Cell cc6 = new Cell(groupname);
        cc6.setColspan(8);
        cc6.setBorderWidth(0);
        table2.addCell(cc6);

        // 指定表格为八列

        table2.setBorder(0);
        table2.setBorderWidth(0);
        table2.setBorderColor(Color.WHITE);
        table2.setPadding(0);
        table2.setSpacing(0);
        for (int a = 0; a < playTeacher.size(); a++) {
          PlayerPojo pojp = (PlayerPojo) playTeacher.get(a);

          Cell cc = new Cell(pojp.getPlayernum());
          cc.setBorderWidth(0);
          table2.addCell(cc);
          Cell ce = new Cell(pojp.getPlayername());
          ce.setBorderWidth(0);
          table2.addCell(ce);
        }
        document.add(table2);
      }

      // 查询教工组的姓名和号码

      // document.add(p1);

      document.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (DocumentException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }