用Itext把數據導出到Pdf文檔


工夫不負有心人!先用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM