iText使用指南

          iText使用指南

          ----------使用iText輸出PDF文件。

          前言

          如今PDF格式文檔的使用已經(jīng)越來越普遍,它在文檔壓縮、安全等方面都表現(xiàn)的非常優(yōu)秀,有關(guān)它的好處我就不在這里多說了。那么如何使用Java語言開發(fā)應(yīng)用來輸出PDF格式的文檔呢?答案就是iText,它是一個(gè)開發(fā)源代碼的項(xiàng)目,你可以使用iText方便的實(shí)現(xiàn)PDF的輸出。這篇文章我將向大家介紹如何使用iText來生成PDF文檔。

          HelloWorld

          作為一個(gè)程序開發(fā)人員,對于HelloWorld程序并不陌生,幾乎每一種語言或應(yīng)用開始總是會(huì)舉一個(gè)HelloWorld的例子來向大家介紹。在開始介紹iText時(shí),我們不妨也從HelloWorld開始。

          /*

           * Created on 2004-1-3,創(chuàng)建第一個(gè)Hello World程序

           */

          package test1;

           

          import java.io.FileNotFoundException;

          import java.io.FileOutputStream;

           

          import com.lowagie.text.*;

          import com.lowagie.text.pdf.*;

          public class HelloWorld {

           

              public static void main(String[] args) {

                  //創(chuàng)建一個(gè)文檔對象

                  Document doc=new Document();

                  try {

                  //定義輸出位置并把文檔對象裝入輸出對象中

                     PdfWriter.getInstance(doc, new FileOutputStream("c:/hello.pdf"));

                      //打開文檔對象

                      doc.open();

                   // 加入文字“Hello World”

                      doc.add(new Paragraph("HelloWorld"));

                   //  關(guān)閉文檔對象,釋放資源

                      doc.close();           

                 } catch (FileNotFoundException e) {

                     e.printStackTrace();

                 } catch (DocumentException e) {

                     e.printStackTrace();

                 }

              }

          }

           

          現(xiàn)在運(yùn)行上面的代碼(記住在這之前把itext.jar放到你的ClassPath 之中),如果一切正常的話你會(huì)在”c:/”看到一個(gè)名為hello.pdf的文件。打開這個(gè)文件,看到了什么?是的文檔里有一行字符“HelloWorld”,如下圖。

          Hello1

          怎么樣是不是很簡單?當(dāng)然我們在實(shí)際應(yīng)用時(shí)不可能只是簡單的輸出一個(gè)字符串就完事了,還要作很多的工作,輸出更復(fù)雜的PDF,下面就讓我們開始進(jìn)一步了解iText的其他功能。

          更復(fù)雜的設(shè)置

             分析一下Document的構(gòu)造方法,我們發(fā)現(xiàn)除了我們上一個(gè)例子中的無參數(shù)構(gòu)造以外還有兩個(gè):

          public Document();

          public Document(Rectangle pageSize);

          public Document(Rectangle pageSize,

             int marginLeft,

             int marginRight,

             int marginTop,

             int marginBottom);

          第一個(gè)設(shè)置文檔的頁面大小,第二個(gè)除了設(shè)置文檔的頁面大小還設(shè)置頁面邊距。下面我分別給出例子。

          Rectangle pSize=new Rectangle(144,90);

            //文檔的背景色

                  pSize.setBackgroundColor(Color.blue);       

                  //創(chuàng)建一個(gè)文檔對象,并設(shè)置他的初始化大小

                  Document doc=new Document(pSize);

           

          Rectangle pSize=new Rectangle(144,90);

                  //文檔的背景色

                  pSize.setBackgroundColor(Color.blue);             

                  //創(chuàng)建一個(gè)文檔對象,設(shè)置初始化大小和頁邊距

                  Document doc=new Document(pSize,5,5,5,5);

          將第一個(gè)例子中的代碼按上面的方法修改然后運(yùn)行,你可以看到輸出的PDF文檔將是這個(gè)樣子,文檔變得很小而且背景是藍(lán)色:

            Hello2

          在上面的例子中我們通過Rectangle設(shè)置了文檔的大小,其實(shí)iText已經(jīng)為我們定義好了許多常用的頁面,比如:A0-A10, LEGAL, LETTER等等,這些都放在com.lowagie.text.PageSize這個(gè)類中,你可以通過調(diào)用PageSize中的靜態(tài)方法直接引用頁面信息。比如:

          PageSize.A4;

           

          設(shè)置字體

             使用iText可以設(shè)置文字的字體,對于我們中國的程序員來說如何顯示中文是最緊要的問題。幸好iText中有一個(gè)專門的包用來設(shè)置亞洲國家的字體你可以從http://itext.sourceforge.net/downloads/iTextAsian.jar下載這個(gè)包。然后把它直接放到你的ClassPath中就可以了。如何設(shè)置字體呢?

          BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

                      Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);

          在上面的代碼中設(shè)置了中文字體的顯示,你只要使用下面的代碼就可以包中文加到PDF中了

          String title = "最新電影:矩陣革命";

                      Paragraph t = new Paragraph(title, FontChinese);

                      doc.add(t);

           

          如果你覺得這樣設(shè)置很麻煩的話,呵呵,那你要自己擴(kuò)展它的源代碼了,設(shè)置字體全部在那個(gè)BaseFont里邊。

           

          編輯表格

             iText中的表格很像HTML中表格的使用不過它有一個(gè)cell代表一個(gè)格子,基本上這里的TableSwing中的Table對象是一致的,比如上面代碼中對于表格的設(shè)置:

          //定義一個(gè)表格

                     Table table = new Table(2);

                      //設(shè)置表格邊框

                     table.setBorderWidth(1);

                      Cell cell = new Cell("Matrix III");

                     cell.setHeader(true);

                      //分列

                     cell.setColspan(2);

                      cell.setBackgroundColor(Color.blue);

                     table.addCell(cell);

           

           

          放置圖片

          現(xiàn)在你一定知道如何把一個(gè)圖片加到文檔中了,沒錯(cuò)只要聲明一個(gè)Image對象就可以了,這里的ImageAWT中的Image使用方法是一樣的。

          //定義一個(gè)圖片

                     Image jpeg = Image.getInstance("C:/matrix.jpg");

                      //圖片居中

                     jpeg.setAlignment(Image.ALIGN_CENTER);

           

           

          運(yùn)行后輸出的PDF文件為:

          matrix3 

          結(jié)束

          有關(guān)iText的使用我就大致介紹這些,更深入的東西只有大家參考源代碼自己體會(huì)了。當(dāng)然其中有些理解也可能是不對的,哪位朋友有什么建議歡迎與我聯(lián)系。

          Mail:wafd@hotmail.com

           

           

          資源:

          iText站點(diǎn)

          http://www.lowagie.com

          iText中文顯示包

          大毛 發(fā)表于 12:04 | 閱讀 (1796) | 評論 (0) | 引用 (0)

          posted on 2005-03-04 23:05 AK747 閱讀(725) 評論(0)  編輯  收藏 所屬分類: JAVA
           
          主站蜘蛛池模板: 商水县| 永春县| 元江| 松潘县| 张家港市| 蚌埠市| 绥江县| 工布江达县| 辽宁省| 怀宁县| 靖宇县| 沙河市| 赤峰市| 九寨沟县| 旺苍县| 上虞市| 南开区| 尉氏县| 平陆县| 东莞市| 双城市| 贵阳市| 通海县| 同江市| 玉溪市| 阜新| 普陀区| 蒙阴县| 图片| 广德县| 峡江县| 芦山县| 张家界市| 云南省| 保靖县| 绥宁县| 高淳县| 长乐市| 洛隆县| 边坝县| 库尔勒市|