轻松使用IText组件制作pdf报表

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

    }


}

效果图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值