java用itext 做pdf报表

来源:互联网 发布:js textarea 编辑高亮 编辑:程序博客网 时间:2024/06/05 21:58

1.需要的工具包:

<dependency>    <groupId>com.itextpdf</groupId>    <artifactId>itextpdf</artifactId>    <version>5.5.8</version></dependency>
2.开始写了:

先建立一个文档

Document document = new Document(PageSize.A4, 50, 50, 50, 50);
用A4纸建立了一个文档,页边距都是50;

建立一个输出流

PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("D:\\aaa.pdf"));
如果在web项目中获得了response,第二个参数
new FileOutputStream("D:\\aaa.pdf")
可以写成
response.getOutputStream()
引用字体

BaseFont baseFontChinese = BaseFont.createFont("C:\\Windows\\Fonts\\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
注意用的是中文字体,这样写就不会出现乱码或者不显示的情况

为字体设置样式

 Font mtext=  new  Font(baseFontChinese , 24 , Font.BOLD,BaseColor.BLUE); Font ftext =  new  Font(baseFontChinese , 15 , Font.NORMAL,BaseColor.BLACK); Font ctext =  new  Font(baseFontChinese , 10 , Font.NORMAL,BaseColor.BLACK);
在这里设置了三种样式的字体以便作为pdf文档的标题,副标题和内容的字体样式来用,第一个参数是字体的类型,第二个参数字体大小,第三个参数字体的粗细,倾斜,第四个参数字体的颜色.

建立一个文本块

<pre name="code" class="java">Chunk title = new Chunk("大标题",mtext);

Chunk类似html中的span,第二个参数就是要用的字体样式,刚才定义了三种,这里用最大号的.

建立一个段落

Paragraph p = new Paragraph();
 p.add(<span style="font-family: Arial, Helvetica, sans-serif;">title</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
将文本块添加到段落中,段落是块级别的,如果在表格中要实现水平或垂直对齐,需要将chunk添加到段落中,将段落添加到表格的单元格中.

建立一个表格

PdfPTable table = new PdfPTable(2);int[] ints = {2,8};table.setWidthPercentage(100);table.setWidths(ints);
这里新建了一个表格,共2列,两列的比例是2:8,表格宽度设置成了A4纸的可用宽度.这里的表格没有行的概念,单元格填充满一行后会从下一行开始.

建立单元格

PdfPCell pdfPCell = new PdfPCell(p);pdfPCell.setVerticalAlignment(1);pdfPCell.setHorizontalAlignment(1);pdfPCell.setPadding(5.0f);pdfPCell.setColspan(2);
设置单元格中文本的垂直和水平对齐方式,设置单元格的内边距,跨2列,还可以设置边框等.

将单元格添加到表格

table.add(pdfPCell);
将表格添加到文档
document.add(table);
写完所有想写的内容后要记住关闭文档;
document.close();

3.总结
有时候用ireport做较灵活的报表时(比如动态改变布局)很困难,自己用itext提供的pdf工具可以做出更复杂的报表.另外用itext的渲染工具去渲染html转换成pdf速度会慢.建议直接用itext提供的工具做.

点击查看itextAPI







0 0
原创粉丝点击