iT邦幫忙

DAY 3
1

java菜鳥的學習筆記系列 第 3

使用iText產生PDF檔-Part 1

今天分享使用iText-免費的pdf library for java-產生pdf檔,Part 1把資料庫某一欄位讀出後產生pdf。
Jar檔可到http://sourceforge.net/projects/itext/files/下載

用iText產生PDF步驟如下:

  1. 產生Document物件

  2. 產生PdfWriter實例

  3. 開啟 Document

  4. 內容加入Document

  5. 關閉Document

    package createPDF;

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Date;

    import com.itextpdf.text.BaseColor;
    import com.itextpdf.text.Chunk;
    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Font;
    import com.itextpdf.text.Font.FontFamily;
    import com.itextpdf.text.PageSize;
    import com.itextpdf.text.pdf.PdfWriter;

    import dao.GetDAOResultSet;

    public class CreatePDF {
    public static final String sql="Select no from fpr_fddr where no like '%FPR%' order by no desc";
    ResultSet rs=null;
    public void create() throws FileNotFoundException, DocumentException{
    Document doc=new Document(); //必須先產生Document
    doc.setPageSize(PageSize.A4); //可以設定文件尺寸,有標準A1, A2, A3...等
    Date simpledate=new Date();
    PdfWriter.getInstance(doc, new FileOutputStream("E:\test"+simpledate.getTime()+".pdf"))
    .setInitialLeading(20);
    //要產生pdf,當然就要有pdfwriter,getInstance是直接產生實例供使用,也可以new一個實例,後者適用未來較複雜的應用
    //只是加入Time只是因為測試過程中,避免檔名相同丟出Exception
    //setInitialLeading是指行距
    doc.open();//要加入內容前要先open.....
    try {
    rs=new GetDAOResultSet().getResultSet(sql);//從資料庫拿data
    while(rs.next()){
    Font font = new Font(FontFamily.TIMES_ROMAN, 14, Font.BOLD, BaseColor.GRAY);//設定字型
    doc.add(new Chunk(rs.getString("no"), font));//Chunk是最小的單元,我是把它想成StringWriter
    doc.add(Chunk.NEWLINE);//換行
    }

    	} catch (Exception e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}finally{
    		try {
    			rs.close();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	doc.close(); //完畢後要close,iText會自動close FileOutputStream
    	System.out.println("OK!!");
    }
    

    }


上一篇
使用java NIO2-Part 1
下一篇
簡易格式化日期 in java
系列文
java菜鳥的學習筆記28

尚未有邦友留言

立即登入留言