基于java的PDF格式文件的生成
2016-01-04 09:44
483 查看
在现项目中,PDF格式文件的处理采用iText,iText是一个能快速产生PDF文件的java类库;使用iText生成的可以分为5个步骤:
1、创建Document对象实例,Document doc = new Document();
2、建立一个书写器(Writer)与Document对象关联,通过书写器可以将文档写入到磁盘;
PDFWriter.getInstance(document,newFileOutputStream(filePath));
3、打开文档,document.open();
4、想文档中添加内容:
a、创建文档页头信息(可选,无页头可不选)
private void createHeader(Document document,String accNo,String accName) throws DocumentException, IOException{
BaseFont bfSong = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontSong = new Font(bfSong, 12, Font.NORMAL);//字体
String title="XXXX标题"+accName;//页头内容
HeaderFooter header = new HeaderFooter(new Phrase(title,fontSong), false);//定义页头
header.setBorder(2);
header.setAlignment(Element.ALIGN_LEFT);//设置位置
document.setHeader(header);//将页头添加到PDF文档中
}
b、创建文档内容,在本项目中是导出表格形式的pdf文件,有Table和PdfPTable两种方式生成表格,前者可以合并行,但是每行的高度是根据内容自动调整的;后者可以设置行高,但是不能合并行;为了美观本项目采用后者;
创建表格:
PdfPTable pdfTable=new PdfPTable(7);//创建一个7列的表格
pdfTable.setWidthPercentage(100);// 设置表格宽度为100%;
向表格中填充数据,content为需要填充的数据
private void createCell( PdfPTable table, String content ){
// Cell cell = new Cell();
PdfPCell cell=null;
try {
//获得用于显示中文的字体
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(bf, 9, Font.NORMAL);//用指定的字体显示
cell=new PdfPCell(new Phrase(content,fontChinese));
cell.setFixedHeight(30);//单元格高30px
cell.setUseAscender(true);
cell.setUseDescender(true);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
}catch ( Exception e ){
Trace.logError( Trace.COMPONENT_FILE,"下载文件时中文出错",e );
}
table.addCell( cell );
}
通过document.add(pdfTable)将表格添加到PDF文档中;
5、关闭文档:document.close();
1、创建Document对象实例,Document doc = new Document();
2、建立一个书写器(Writer)与Document对象关联,通过书写器可以将文档写入到磁盘;
PDFWriter.getInstance(document,newFileOutputStream(filePath));
3、打开文档,document.open();
4、想文档中添加内容:
a、创建文档页头信息(可选,无页头可不选)
private void createHeader(Document document,String accNo,String accName) throws DocumentException, IOException{
BaseFont bfSong = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontSong = new Font(bfSong, 12, Font.NORMAL);//字体
String title="XXXX标题"+accName;//页头内容
HeaderFooter header = new HeaderFooter(new Phrase(title,fontSong), false);//定义页头
header.setBorder(2);
header.setAlignment(Element.ALIGN_LEFT);//设置位置
document.setHeader(header);//将页头添加到PDF文档中
}
b、创建文档内容,在本项目中是导出表格形式的pdf文件,有Table和PdfPTable两种方式生成表格,前者可以合并行,但是每行的高度是根据内容自动调整的;后者可以设置行高,但是不能合并行;为了美观本项目采用后者;
创建表格:
PdfPTable pdfTable=new PdfPTable(7);//创建一个7列的表格
pdfTable.setWidthPercentage(100);// 设置表格宽度为100%;
向表格中填充数据,content为需要填充的数据
private void createCell( PdfPTable table, String content ){
// Cell cell = new Cell();
PdfPCell cell=null;
try {
//获得用于显示中文的字体
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(bf, 9, Font.NORMAL);//用指定的字体显示
cell=new PdfPCell(new Phrase(content,fontChinese));
cell.setFixedHeight(30);//单元格高30px
cell.setUseAscender(true);
cell.setUseDescender(true);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
}catch ( Exception e ){
Trace.logError( Trace.COMPONENT_FILE,"下载文件时中文出错",e );
}
table.addCell( cell );
}
通过document.add(pdfTable)将表格添加到PDF文档中;
5、关闭文档:document.close();
相关文章推荐
- 《Java编程思想》学习笔记9——集合容器高级
- JavaBean为什么要实现Serializable接口的原因
- Java设置模式_创建型_单例模式_只存在一个实例
- Eclipse 如何安装单独的一个jar插件
- 《Java编程思想》学习笔记8——泛型编程高级
- 《Java编程思想》学习笔记7——泛型编程基础
- 《Java编程思想》学习笔记6——Java动态代理
- 《Java编程思想》学习笔记5——正则表达式量词匹配
- 《Java编程思想》学习笔记4——集合容器
- Java Web学习总结(9)——servlet和Jsp生命周期解读
- Java Web学习总结(9)——servlet和Jsp生命周期解读
- Java Web学习总结(9)——servlet和Jsp生命周期解读
- java二维码的生成与解析代码
- 《Java编程思想》学习笔记3——内部类
- 【Java】跨域传输数据中文乱码
- 《Java编程思想》学习笔记2——对象初始化和面向对象特性
- Java Web学习总结(10)——Session详解
- Java Web学习总结(10)——Session详解
- Java Web学习总结(10)——Session详解
- 《Java编程思想》学习笔记1——面向对象和JVM基础