java用itext 做pdf报表

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值