工夫不負有心人!先用POI實現了把數據導出為Excel,現在又實現了用Itext把數據導出為Pdf文檔.因為這些技術是以前都沒有接觸的,而現在又都基本掌握了,所以心里略有一些成就感.現把完整程序代碼列在下面,以供對Itext有興趣的朋友參考.?
ItextPdfDmo.java
package com.javaeye.yongsky;import java.awt.Color;
import java.io.FileOutputStream;
import java.sql.ResultSet;import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
/*** * @author yangshoujun* */
public class ItextPdfDmo {//表頭public static final String[] tableHeader = { "企業中文名", "所屬國家", "企業英文名"
,"2003年排名", "2004年排名", "2005年排名", "2006年排名", "2007年排名", "主要業務"
,"2003年營業額", "2004年營業額", "2005年營業額", "2006年營業額", "2007年營業額", "企業編號"
,"名次升降", "圖片", "狀況"
};//數據表字段數private static final int colNumber = 18
;//表格的設置private static final int spacing = 2
;//表格的設置private static final int padding = 2
;//導出Pdf文擋public static void exportPdfdocument() {// 創建文Pdf文擋Document document =
new Document(
new Rectangle(1500, 2000), 10, 10, 10
,10
);try {PdfWriter.getInstance(document, new FileOutputStream("d:\\世界五百強企業名次表.pdf"
));document.open();// 中文字體BaseFont bfChinese = BaseFont.createFont("STSong-Light"
,"UniGB-UCS2-H"
, BaseFont.NOT_EMBEDDED);Font fontChinese =
new Font(bfChinese, 12
, Font.HELVETICA);// 創建有colNumber(18)列的表格PdfPTable datatable =
new PdfPTable(colNumber);int[] cellsWidth = { 8, 5, 8, 3, 3, 3, 3, 2, 6, 4, 4, 4, 4, 2, 2
,2, 2, 2
};datatable.setWidths(cellsWidth);datatable.setWidthPercentage(100);
// 表格的寬度百分比
datatable.getDefaultCell().setPadding(padding);datatable.getDefaultCell().setBorderWidth(spacing);datatable.getDefaultCell().setBackgroundColor(Color.ORANGE);datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);// 添加表頭元素for (
int i = 0; i < colNumber; i++
) {datatable.addCell(new Paragraph(tableHeader[i], fontChinese));}datatable.setHeaderRows(1);
// 表頭結束datatable.getDefaultCell().setBorderWidth(1
);ResultSet rs =
SheetDataSource.selectAllDataFromDB();int rowIndex = 1
;while (rs.next()) {if (rowIndex % 2 == 1
) {datatable.getDefaultCell().setGrayFill(0.9f
);}for (
int i = 1; i <= colNumber; i++
)datatable.addCell(new Paragraph(rs.getString(i),fontChinese));if (rowIndex % 2 == 1
) {datatable.getDefaultCell().setGrayFill(1.0f
);}rowIndex++
;}document.add(datatable);} catch (Exception e) {e.printStackTrace();}document.close();}public static void main(String[] args) {exportPdfdocument();}
} 本程序主要功能 : 程序可以把數據庫中數據以表格的形式導出到Pdf文檔,并對表格做了些簡單的設置.本程序引用我的前一篇文章中用到的SheetDataSource.java這個文件,文章附件中有詳細代碼.?
有關Itext[附]:?
(一)Itext簡單介紹 :iText是著名的開放源碼的站點sourceforge一個項目,是用于生成PDF文檔的一個java類庫。通過iText不僅可以生成PDF或rtf的文檔,而且可以將XML、Html文件轉化為PDF文件。?
(二)Itext入門?
使用Itext主要有五個步驟:?
(1)建立com.lowagie.text.Document對象的實例
Document document =
new Document();
(2)建立一個書寫器(Writer)與document對象關聯,通過書寫器(Writer)可以將文檔寫入到磁盤中。
PDFWriter.getInstance(document,
new FileOutputStream("D:\\HelloItext.PDF"));
(3)打開文檔。
document.open();
(4)向文檔中添加內容。
document.add(
new Paragraph("Hello Itext"));
(5)關閉文檔。
document.close();
通過上面的5個步驟,就能產生一個簡單HelloItext.PDF的文件,文件內容為"Hello Itext"。當然用Itext實現這樣的功能很簡單,但是如果要達到我們實際的要求就沒有這么簡單了.如果要完全掌握Itext還需要閱讀文檔和有關資料.Itext包括表格處理,圖像處理,報表等復雜的應用.?
簡單的完整可運行的代碼如下:
package com.javaeye.yongsky;import java.io.FileOutputStream;import com.lowagie.text.Document;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;public class HelloItext {public static void main(String[] args) {Document document =
new Document(PageSize.A4.rotate(), 10, 10, 10, 10
);try {PdfWriter.getInstance(document, new FileOutputStream("D:\\HelloItext.pdf"
));document.open();document.add(new Paragraph("Hello Itext"
));} catch (Exception de) {de.printStackTrace();}document.close();}
} 提示:?
下面附件中有Itext的JAR包可和官方文檔供下載.
轉:http://yongsky.iteye.com/blog/99406
總結
以上是生活随笔為你收集整理的用Itext把数据导出到Pdf文档的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。