使用ITEXT与JAVA生成PDF报表

        /**
* 生成PDF文件并调用相应的阅读器实现打印预览
* @param listAll 待生成文件的记录
* @param response
*/
public void createtable(List listAll, HttpServletResponse response) throws IOException {
SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMddHHmm");
Date today = new Date();
String dateToday = "企业未付费订单_" + dataFormat.format(today);
//定义纸张类型及方向,页边距

Document document = new Document(PageSize.A4.rotate());

                ByteArrayOutputStream ba = new ByteArrayOutputStream();
 try {
                   //方法1:向客户端缓存中写入临时PDF文件                  
                    PdfWriter.getInstance(document,ba);

                   //方法2:在服务器端的D盘生成PDF文件                    
  PdfWriter.getInstance(document, new FileOutputStream(
    "d://" + dateToday +".pdf"));
  document.open();
  // 解决中文问题
  BaseFont bfChinese = BaseFont.createFont("STSong-Light",
    "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
  Paragraph Title = new Paragraph();
  // 设置页面格式
   Title.setSpacingBefore(8);
   Title.setSpacingAfter(2);
   Title.setAlignment(1);
   // 设置PDF标题
   Title.add(new Chunk("企业订单管理---企业未付费订单列表",
     new com.lowagie.text.Font(bfChinese, 16,
       com.lowagie.text.Font.BOLD)));

   document.add(new Paragraph("51SoftJob招聘网", new com.lowagie.text.Font(
     bfChinese, 12, com.lowagie.text.Font.BOLD)));
   //将标题输出到PDF文档

  document.add(Title) ;

  // ------------------------下一页是从数据库中查询的数据显示到表格中--------------------------
 // document.newPage(); //新的一页

  List l = listAll;
  //设置表格的列行

  Table mytable = new Table(10);
  //
  int WidthE[] = { 1, 2, 6, 3, 3, 4, 4, 2, 3, 2 };
  //设置格子的颜色

  mytable.setWidth(100);
  mytable.setWidths(WidthE);
  mytable.setSpacing(0);
  mytable.setDefaultHorizontalAlignment(1);
  mytable.setDefaultCellBorderColor(Color.blue);
  mytable.setBorderColor(Color.blue);
  
  // 文本内容
  Font FonttextChinese = new Font(bfChinese, 8, Font.NORMAL);
  // 表头
  Font FontheadChinese = new Font(bfChinese, 10, Font.BOLD);

  // 设置表头
  Cell h1 = new Cell(new Phrase("编号", FontheadChinese ));
  h1.setHorizontalAlignment(Element.ALIGN_CENTER);
  h1.setBackgroundColor(Color.lightGray);
  
  Cell h2 = new Cell(new Phrase("订单号", FontheadChinese));
  h2.setHorizontalAlignment(Element.ALIGN_CENTER);
  h2.setBackgroundColor(Color.lightGray);
  
  Cell h3 = new Cell(new Phrase("企业名称", FontheadChinese));
  h3.setHorizontalAlignment(Element.ALIGN_CENTER);
  h3.setBackgroundColor(Color.lightGray);
  Cell h4 = new Cell(new Phrase("订单类型", FontheadChinese));
  h4.setHorizontalAlignment(Element.ALIGN_CENTER);
  h4.setBackgroundColor(Color.lightGray);

  Cell h5 = new Cell(new Phrase("联系人", FontheadChinese));
  h5.setHorizontalAlignment(Element.ALIGN_CENTER);
  h5.setBackgroundColor(Color.lightGray);

  Cell h6 = new Cell(new Phrase("联系电话", FontheadChinese));
  h6.setHorizontalAlignment(Element.ALIGN_CENTER);
  h6.setBackgroundColor(Color.lightGray);
  
  Cell h7 = new Cell(new Phrase("付款方式", FontheadChinese));
  h7.setHorizontalAlignment(Element.ALIGN_CENTER);
  h7.setBackgroundColor(Color.lightGray);
  
  Cell h8 = new Cell(new Phrase("金额", FontheadChinese));
  h8.setHorizontalAlignment(Element.ALIGN_CENTER);
  h8.setBackgroundColor(Color.lightGray);
  
  Cell h9 = new Cell(new Phrase("提交日期", FontheadChinese));
  h9.setHorizontalAlignment(Element.ALIGN_CENTER);
  h9.setBackgroundColor(Color.lightGray);
  
  Cell h10 = new Cell(new Phrase("审核状态", FontheadChinese));
  h10.setHorizontalAlignment(Element.ALIGN_CENTER);
  h10.setBackgroundColor(Color.lightGray);

  mytable.addCell(h1);
  mytable.addCell(h2);
  mytable.addCell(h3);
  mytable.addCell(h4);
  mytable.addCell(h5);
  mytable.addCell(h6);
  mytable.addCell(h7);
  mytable.addCell(h8);
  mytable.addCell(h9);
  mytable.addCell(h10);

  for (int i = 1; i <= l.size(); i++) {
Map recordMap = new HashMap();
recordMap = (Map) listAll.get(i - 1);
   Cell cell1 = new Cell(new Phrase(String.valueOf(i), FonttextChinese));
   cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
   Cell cell2 = new Cell(new Phrase(String.valueOf(recordMap.get("ORDER_ID")),
     FonttextChinese));
   cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
   Cell cell3 = new Cell(new Phrase(String.valueOf(recordMap.get("ENTERPRISE_NAME")), FonttextChinese));
   cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
   Cell cell4 = new Cell(new Phrase(getOrderTypeName(String.valueOf(recordMap.get("ORDER_TYPE")), "1"),
     FonttextChinese));
   cell4.setHorizontalAlignment(Element.ALIGN_CENTER);
   Cell cell5 = new Cell(new Phrase(String.valueOf(recordMap.get("CONTACT_NAME")),
     FonttextChinese));
   cell5.setHorizontalAlignment(Element.ALIGN_CENTER);
   Cell cell6 = new Cell(new Phrase(String.valueOf(recordMap.get("CONTACT_TEL")), FonttextChinese));
   cell6.setHorizontalAlignment(Element.ALIGN_CENTER);
   
   Cell cell7 = new Cell(new Phrase(String.valueOf(recordMap.get("BANK")), FonttextChinese));
   cell7.setHorizontalAlignment(Element.ALIGN_CENTER);
   
   Cell cell8 = new Cell(new Phrase(String.valueOf(recordMap.get("PRICE")), FonttextChinese));
   cell8.setHorizontalAlignment(Element.ALIGN_CENTER);
   
   Cell cell9 = new Cell(new Phrase(getFormatTime(String.valueOf(recordMap.get("SUB_TIME"))), FonttextChinese));
   cell9.setHorizontalAlignment(Element.ALIGN_CENTER);
   
   Cell cell10 = new Cell(new Phrase(getOrderTypeName(String.valueOf(recordMap.get("AUDITING_STATE")), "2"), FonttextChinese));
   cell10.setHorizontalAlignment(Element.ALIGN_CENTER);
   mytable.addCell(cell1);
   mytable.addCell(cell2);
   mytable.addCell(cell3);
   mytable.addCell(cell4);
   mytable.addCell(cell5);
   mytable.addCell(cell6);
   mytable.addCell(cell7);
   mytable.addCell(cell8);
   mytable.addCell(cell9);
   mytable.addCell(cell10);
   
  }
  document.add(mytable);
 } catch (Exception de) {
  de.printStackTrace();
 }
 document.close();
 //方法1 好处: 将PDF文件通过流的形式输送到客户端的缓存。这样做的好处是不会在服务器上留下                            //任何“遗迹”。
                 //直接调用客户端的PDF阅读器打开生成的PDF文件
          response.setContentType("application/pdf");
          response.setContentLength(ba.size());
          ServletOutputStream out = response.getOutputStream();
          ba.writeTo(out);
          out.flush(); 
                  
                   //方法2  要服务器端生成PDF文件                 
 //设置应用程序路径及PDF文件路径
 String path = "/"C://Program Files//Adobe//Reader 8.0//Reader//AcroRd32.exe/" d:/" + dateToday + ".pdf" ;
 
 //自动打开生成的PDF文件,以便管理员打印预览
     Runtime.getRuntime().exec(path);

 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值