野兽

itext jsp页面打印

最近项目中需要一个打印功能,需求很简单,只要打印出单据就可以了,画出一个表格,一些信息需要从数据库中提取

找到了免费的itext,可以实现我的简单的功能了

代码:(打印方法)

public String createPDF(HttpServletRequest request, HttpServletResponse response, String billCode,String comm) {
 Rectangle  rectangle = new Rectangle((float) 663.14 , (float) 370.7);
    Document document = new Document(rectangle,40,50,22,10);// 建立一个Document对象
    //Document document=new Document(PageSize.A4,36,36,36,36);
    //document.setPageSize(PageSize.A4);// 设置页面大小
    //String billCode = "20121026181";
   List<ClientreCharge> reList = cRechargeManager.getreChargeByBillCode(billCode);
   SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分");
   String time = df.format(new Date());
    try {
     ByteArrayOutputStream ops = new ByteArrayOutputStream();//输出到客户段的流
     //OutputStream ops=new FileOutputStream("e:/taony125-test.pdf");//保存进磁盘的流
     //两个ops输出流用来切换,是保存进磁盘还是输出到客户端
   
     PdfWriter.getInstance(document,ops);// 建立一个PdfWriter对象
     document.open();
     BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 设置中文字体
   
     Font headFont1 = new Font(bfChinese, 14, Font.BOLD);// 设置字体大小
     Font headFontN = new Font(bfChinese, 13, Font.BOLD);// 设置字体大小
     Font headFont2 = new Font(bfChinese, 12, Font.BOLD);// 设置字体大小
     Font headFont3 = new Font(bfChinese, 10, Font.NORMAL);// 设置字体大小
   
     float[] widths = { 100, 110, 110, 110, 100, 110 };// 设置表格的列以及列宽
     PdfPTable table = new PdfPTable(widths);// 建立一个pdf表格
   
     table.setSpacingBefore(130f);// 设置表格上面空白宽度
     table.setTotalWidth(535);// 设置表格的宽度
     table.setLockedWidth(true);// 设置表格的宽度固定
     // table.getDefaultCell().setBorder(0);//设置表格默认为无边框
     PdfPCell cell = new PdfPCell(new Paragraph("石家庄瑞特维通讯网络有限公司充值业务单",headFont1));// 建立一个单元格
     // cell.setBorder(0);//设置单元格无边框
   
     cell.setBorder(0);
     cell.setFixedHeight(40);//单元格高度
     cell.setColspan(6);// 设置合并单元格的列数
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);// 设置内容水平居中显示
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     table.addCell(cell);
   
     //列标题
     cell = new PdfPCell(new Paragraph("NO:", headFontN));
     cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
     cell.setBorder(0);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(billCode, headFontN));
     cell.setBorder(0);
     cell.setColspan(3);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph(time, headFontN));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setColspan(2);
     cell.setBorder(0);
     table.addCell(cell);
   
     cell = new PdfPCell(new Paragraph("业务专员",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph(reList.get(0).getClientSellerName(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("企业号",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getClireClMark(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("客服专员",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getClientsevName(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph("公司名称",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     cell.setFixedHeight(30);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getClientName() ,headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     cell.setFixedHeight(30);
     cell.setColspan(3);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("新开",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     cell.setFixedHeight(30);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("口  是  | 口  否",headFont3));
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     //Graphics grx = null ;
     //grx.s
     //grx.drawRect(0, 0, 2, 2);
   //添加一个矩形
    //cell.addElement((Element) grx);

     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph("联系人",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getContent(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("联系电话",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getMoney(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("充值单价",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getCounts(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
    
     PdfPTable table2 = null;
     //cell.setRowspan(3);
     if (reList.size() < 2){
      table2 = new PdfPTable(1);
      ClientreCharge creCharge = reList.get(0);
       cell = new PdfPCell(new Paragraph("充值属性:" +creCharge.getDictName()+ "   金额: "
                  + creCharge.getClireMoney() + "         ",headFont3));
       cell.setBorder(0);
       //cell.setColspan(6);
       table2.addCell(cell);
     
     }else{
    
      table2 = new PdfPTable(2);
     for (ClientreCharge creCharge : reList){
      cell = new PdfPCell(new Paragraph("充值属性:" +creCharge.getDictName()+ "   金额: "
                 + creCharge.getClireMoney() + "         ",headFont3));
      cell.setBorder(0);
      //cell.setColspan(6);
      table2.addCell(cell);
     }}
     cell = new PdfPCell(table2);
     cell.setFixedHeight(80);
     cell.setColspan(6);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph("回款方式",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     cell.setRowspan(2);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("银行对公",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(" 口 中行    口    工行",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     cell.setColspan(2);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("回款时间",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(" ",headFont3));
     cell.setFixedHeight(20);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph("银行对私",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("口  工行    口 建行    口  交行    口  农行   口  光大银行   口  张家口银行   口  现金",headFont3));
     cell.setFixedHeight(20);
     cell.setColspan(4);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph("充值确认",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getUsers(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("  ",headFont3));
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("业务确认",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("",headFont3));
     cell.setFixedHeight(20);
     cell.setColspan(2);
     table.addCell(cell);
    
    
     cell = new PdfPCell(new Paragraph("备注:" + comm, headFont3));
     // cell.setBorder(0);
     cell.setFixedHeight(50);
     cell.setColspan(6);
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     table.addCell(cell);

     document.add(table);
     document.close();
   
     //输出到客户端 start,假如是保存进磁盘,则切换上面的流ops,且屏蔽此段代码即可
     response.setContentType("application/pdf");
     response.setContentLength(ops.size());
     ServletOutputStream out = response.getOutputStream();
     ops.writeTo(out);
     out.flush();
     //end
   
    } catch (DocumentException de) {
     System.err.println(de.getMessage());
     return null;
    } catch (IOException ioe) {
     System.err.println(ioe.getMessage());
     return null;
    }
    return null;
 }

效果:

posted @ 2012-11-18 16:11  android-susu  阅读(711)  评论(0编辑  收藏  举报