一、准备jar包;
iText-2.1.7.jar
itext-rtf-2.1.7.jar
iTextAsian-2.1.7.jar
二、导出思路
此图是我想要导出文档的样式,文档由标题、段落、表格组成。
A2表数据是根据A1表主键查询得来的,所以利用for循环将内容循环输出。
三、网上的iText使用教程主要介绍如何建立Document,如何写入内容和定义格式,并不会介绍如何定位文档输出位置。教程只能教你把文档下载到C盘,D盘…,无疑是不符合实际要求的。
通过HttpServletResponse response可以实现文档定位。
//设置中文字体
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
//标题字体风格
Font titleFont = new Font(bfChinese,12,Font.BOLD);
//正文字体风格
Font contextFont = new Font(bfChinese,10,Font.NORMAL);
//标题
Paragraph title = new Paragraph("文章标题");
title.setAlignment(Element.ALIGN_CENTER);//设置标题格式对齐方式
title.setFont(titleFont);
document.add(title);
//日期
Date date = new Date(0);
SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd " );
Paragraph context = new Paragraph(sdf.format(date));
context.setAlignment(Element.ALIGN_RIGHT);//靠右对齐
context.setFont(contextFont);//正文字体风格
context.setSpacingBefore(3);//段间距
context.setFirstLineIndent(20);//设置第一行空的列数
document.add(context);
List<entity1> list = A1Dao.findAll();
if(list.size() > 0){
for(int i = 0;i < list.size();i++){
//表中英名称
Paragraph name = new Paragraph(list.get(i).getXXX()+" "+list.get(i).getXXX());
name.setAlignment(Element.ALIGN_LEFT);//靠左对齐
name.setFont(contextFont); //正文字体风格
document.add(name);
//设置Table表格,创建一个五列的表格
Table table = new Table(5);
int width[] = {40,15,15,15,15};//设置每列宽度比例
table.setWidths(width);
table.setWidth(100);//占页面宽度比例
table.setAlignment(Element.ALIGN_CENTER);//居中
table.setAlignment(Element.ALIGN_MIDDLE);//垂直居中
table.setAutoFillEmptyCells(true);//自动填满
table.setBorderWidth(1);//边框宽度
table.addCell(new Cell("列名一"));
table.addCell(new Cell("列名二"));
table.addCell(new Cell("列名三"));
table.addCell(new Cell("列名四"));
table.addCell(new Cell("列名五"));
List<entity2> list2 = A2Dao.findByA1(list.get(i).getXXX());
if(list2.size() > 0){
for(int j = 0;j < list2.size();j++){
table.addCell(new Cell(list2.get(j).getXXX()));
table.addCell(new Cell(list2.get(j).getXXX()));
table.addCell(new Cell(list2.get(j).getXXX()));
table.addCell(new Cell(list2.get(j).getXXX()));
table.addCell(new Cell(list2.get(j).getXXX()));
}
}
document.add(table);
}
}
} catch (IOException e) {
e.printStackTrace();
}
document.close();
}
转载于:https://blog.51cto.com/12527958/2043911