您的位置:首页 > 编程语言 > Java开发

Struts+iText生成Pdf报表

2013-09-04 14:11 351 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: