Struts+iText生成Pdf报表

本文介绍了如何结合Struts和iText库来开发一个生成PDF报表的应用。首先,简述了iText作为Java类库在创建PDF文档方面的用途,特别是与Servlet的结合。然后,提供了一个具体的开发实例,展示了如何在Struts action中创建PDF,包括设置页面大小、字体、创建表格并填充数据,最后保存到指定路径。通过这个实例,读者可以理解如何将Struts和iText整合用于报表生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值