天天看點

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報表