六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 40|回复: 0

Java中使用iText组件制作pdf报表

[复制链接]

升级  0.95%

325

主题

325

主题

325

主题

探花

Rank: 6Rank: 6

积分
1019
 楼主| 发表于 2013-1-27 13:14:10 | 显示全部楼层 |阅读模式
转自【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();        }    }}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表