天天看点

Java中使用iText组件制作pdf报表

转自【http://www.blogjava.net/sxyx2008/archive/2010/07/01/324960.html】

环境需求:

                iText-2.1.7.jar

                iTextAsian.jar

示例代码:

package com.iText.create;

import java.awt.Color;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import com.lowagie.text.Cell;

import com.lowagie.text.Document;

import com.lowagie.text.DocumentException;

import com.lowagie.text.Element;

import com.lowagie.text.Font;

import com.lowagie.text.HeaderFooter;

import com.lowagie.text.Image;

import com.lowagie.text.PageSize;

import com.lowagie.text.Paragraph;

import com.lowagie.text.Phrase;

import com.lowagie.text.Table;

import com.lowagie.text.pdf.BaseFont;

import com.lowagie.text.pdf.PdfWriter;

/** *//**

* 功能描述:使用Itext组件创建pdf文档<br>

* 创建时间:2010-07-01

* @author sxyx2008

*

*/

public class CreatePdf {

public CreatePdf() throws Exception{

//创建一个文档对象纸张大小为A4

Document doc=new Document(PageSize.A4,50,50,50,50);

//设置要输出到磁盘上的文件名称

PdfWriter writer=PdfWriter.getInstance(doc,new FileOutputStream(new File("徐熙媛.pdf")));

//设置作者信息

doc.addAuthor("sxyx2008");

//设置文档创建日期

doc.addCreationDate();

//设置标题

doc.addTitle("iText测试");

//设置值主题

doc.addSubject("iText");

//构建页脚

HeaderFooter footer=new HeaderFooter(new Phrase(), true);

//设置页脚是否有边框

//0表示无

//1上边框

//2下边框

//3上下边框都有 默认都有

//设置页脚是否有边框

footer.setBorder(0);

//footer.setBorder(1);

//footer.setBorder(2);

//footer.setBorder(3);

//设置页脚的对齐方式

footer.setAlignment(Element.ALIGN_CENTER);

//将页脚添加到文档中

doc.setFooter(footer);

//打开文档开始写内容

doc.open();

//Paragraph par1=new Paragraph("Hello,Welcome You");

//Paragraph par2=new Paragraph("你好,中文测试",ChineseFont());

/**//*par1.setAlignment(Element.ALIGN_CENTER);

doc.add(par1);*/

//par2.setAlignment(Element.ALIGN_CENTER);

//doc.add(par2);

//构建一段落

Paragraph par3=new Paragraph("客户信息表",ChineseFont());

//设置局中对齐

par3.setAlignment(Element.ALIGN_CENTER);

//添加到文档

doc.add(par3);

//创建一个四列的表格

Table table=new Table(4);

//设置边框

table.setBorder(1);

//创建表头

Cell cell1=new Cell(new Phrase("编号",ChineseFont()));

cell1.setHorizontalAlignment(Element.ALIGN_CENTER);

cell1.setVerticalAlignment(Element.ALIGN_CENTER);

cell1.setHeader(true);

cell1.setBackgroundColor(Color.RED);

Cell cell2=new Cell(new Phrase("姓名",ChineseFont()));

cell2.setHorizontalAlignment(Element.ALIGN_CENTER);

cell2.setVerticalAlignment(Element.ALIGN_CENTER);

cell2.setHeader(true);

cell2.setBackgroundColor(Color.RED);

Cell cell3=new Cell(new Phrase("性别",ChineseFont()));

cell3.setHorizontalAlignment(Element.ALIGN_CENTER);

cell3.setVerticalAlignment(Element.ALIGN_CENTER);

cell3.setHeader(true);

cell3.setBackgroundColor(Color.RED);

Cell cell4=new Cell(new Phrase("备注",ChineseFont()));

cell4.setHorizontalAlignment(Element.ALIGN_CENTER);

cell4.setVerticalAlignment(Element.ALIGN_CENTER);

cell4.setHeader(true);

cell4.setBackgroundColor(Color.RED);

table.addCell(cell1);

table.addCell(cell2);

table.addCell(cell3);

table.addCell(cell4);

//添加此代码后每页都会显示表头

table.endHeaders();

//循环向表格中添加100条记录 100行4列的表格

//以下代码的作用是创建100行数据,其中每行有四列,列依次为 编号 姓名 性别 备注

for (int i = 1; i <=100; i++) {

//设置编号单元格

Cell cell11=new Cell(i+"");

//设置姓名单元格

Cell cell22=new Cell(new Phrase("徐熙媛",ChineseFont()));

//设置性别单元格

Cell cell33=new Cell(new Phrase("女",ChineseFont()));

//设置备注单元格

Cell cell44=new Cell(new Phrase("好姑娘",ChineseFont()));

//单元格水平对齐方式

cell11.setHorizontalAlignment(Element.ALIGN_CENTER);

//单元格垂直对齐方式

cell11.setVerticalAlignment(Element.ALIGN_CENTER);

cell22.setHorizontalAlignment(Element.ALIGN_CENTER);

cell22.setVerticalAlignment(Element.ALIGN_CENTER);

cell33.setHorizontalAlignment(Element.ALIGN_CENTER);

cell33.setVerticalAlignment(Element.ALIGN_CENTER);

cell44.setHorizontalAlignment(Element.ALIGN_CENTER);

cell44.setVerticalAlignment(Element.ALIGN_CENTER);

table.addCell(cell11);

table.addCell(cell22);

table.addCell(cell33);

table.addCell(cell44);

}

//将表格添加到新的文档

doc.add(table);

//创建新的一页

doc.newPage();

//添加图片

Image image=Image.getInstance("D://Program Files//myeclipseworkspace//6.5//iText//src//5.jpg");

//添加到文档

doc.add(image);

//设置对象方式

image.setAlignment(Element.ALIGN_CENTER);

doc.close();

writer.close();

}

//pdf文档中文字符处理

public static Font ChineseFont()

{

BaseFont baseFont=null;

try {

baseFont=BaseFont.createFont("STSong-Light","UniGB-UCS2-H", true);

} catch (DocumentException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

Font chineseFont=new Font(baseFont,8,Font.NORMAL,Color.BLUE);

return chineseFont;

}

public static void main(String[] args) {

try {

new CreatePdf();

} catch (Exception e) {

e.printStackTrace();

}

}

}

Java中使用iText组件制作pdf报表