Struts+iText生成Pdf报表

来源:互联网 发布:淘宝卖家网址导航下载 编辑:程序博客网 时间:2024/05/18 03:54
1.iText简介
iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,
图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够
使你正确的控制Servlet的输出。
2.struts+iText开发实例 
下面举例介绍一下用struts+itext开发生成pdf:
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.itextpdf.text.Document;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
@Controller
@Scope("prototype")
@ParentPackage("struts-base")
@Namespace("/cstOrder")
public class OrderAction extends BaseAction {
private Pager<CstOrder> pager;
public Pager<CstOrder> getPager() {
  return pager;
 }
 public void setPager(Pager<CstOrder> pager) {
  this.pager = pager;
 }

@Action(value="doCreatePdf",results={@Result(name="success",type="json",
   params={"root","resultMap"})})
 public String doCreatePdf(){
  try {
   if(pager==null){
    pager = new Pager<CstOrder>();
   }
   pager = orderService.getCstOrdersByPager(pager.getCurrentPage(), pager.getPageSize(), order); 
   Document doc = null;     
   BaseFont bfChinese=null; 
            doc = new Document(PageSize.A4, 50, 50, 50, 50); //设置页面大小
            bfChinese=BaseFont.createFont("C:/Windows/Fonts/simhei.ttf", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);//从系统盘中选择字体,
            Font  FontChinese = new Font(bfChinese, 12, Font.NORMAL ); //设置字体大小 
            File file = new File("E:/text.pdf");
          if(file.exists()){
              file.delete();
            }
            PdfWriter.getInstance(doc, new FileOutputStream("E:/text.pdf"));  //设置生成pdf的路径   
            doc.open();  
            // PDF文件内容
            PdfPTable table = new PdfPTable(3);//设置为表格
            table.setWidthPercentage(80f);
            PdfPCell h1 = new PdfPCell(new Paragraph("编号", FontChinese));//每个单元格的标题
            PdfPCell h2 = new PdfPCell(new Paragraph("客户名称", FontChinese));
            PdfPCell h3 = new PdfPCell(new Paragraph("订单金额", FontChinese));
            table.setHeaderRows(1);
            table.addCell(h1);
            table.addCell(h2);
            table.addCell(h3);
            PdfPCell cell;
            List<CstOrder> orderList = pager.getPageRecords();
            for(int i=0;i<orderList.size();i++){
             CstOrder order = orderList.get(i);
             cell = new PdfPCell(new Paragraph(String.valueOf(order.getOrdId()),FontChinese));//设置单元格内容
             table.addCell(cell);
             cell = new PdfPCell(new Paragraph(order.getCstCustomer().getCustName(),FontChinese));
             table.addCell(cell);
             cell = new PdfPCell(new Paragraph(order.getOrdCapital(),FontChinese));
             table.addCell(cell);
            }
            doc.add(table);
            doc.close();
   resultMap.put("retCode", RetCode.SUCCESS);
   resultMap.put("msg", "生成Pdf成功,存放的路径E:/text.pdf");
  } catch (Exception e) {
   e.printStackTrace();
   log.info("doCreateExcel bug:{}",e);
   resultMap.put("retCode", RetCode.FAIL);
   resultMap.put("msg","生成Pdf失败,请重试!");
  }
  return SUCCESS;
 }
}
itext-5.4.0开发包(http://dl.vmall.com/c0cbxe08tn) 
原创粉丝点击