环境需求:
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();
}
}
}
效果图:
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();
}
}
}