您的位置:首页 > 编程语言 > Java开发

基于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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: