今天分享使用iText-免費的pdf library for java-產生pdf檔,Part 1把資料庫某一欄位讀出後產生pdf。
Jar檔可到http://sourceforge.net/projects/itext/files/下載
用iText產生PDF步驟如下:
產生Document物件
產生PdfWriter實例
開啟 Document
將內容加入Document
關閉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!!");
}
}