上次我们用jacob来操作Microsoft Word,今天我们来操作PDF文档。
虽然jacob中也有关于PDF的方法,但是过于复杂。iText是一个开源的PDF工具,小巧而又便捷。
logo.gif
官方网站是: http://www.lowagie.com/iText/
官方的解释:iText is a library that allows you to generate PDF files . the fly
最新版本为:2.1.5
 
我的开发环境:JDK1.6+MyEclipse7+Tomcat5.5.27
首先在MyEclipse中新建一个项目,名称为iText。
新建一个Class(类)HelloWorld.java ,Package(包)为com.test ,代码如下:
package com.test;    

import java.io.FileOutputStream;    
import java.io.IOException;    

import com.lowagie.text.Document;    
import com.lowagie.text.DocumentException;    
import com.lowagie.text.Paragraph;    
import com.lowagie.text.pdf.PdfWriter;    

public class HelloWorld {    
         /**    
         * 生成一个简单的PDF文件:HelloWorld.pdf    
         *    
         * 作者:小段    
         */
    
         public static void main(String[] args) {    

                System.out.println( "Hello World");    
                 //第一步:创建一个document对象。    
                Document document = new Document();    
                 try {    
                         // 第二步:    
                         // 创建一个PdfWriter实例,    
                         // 将文件输出流指向一个文件。    
                        PdfWriter.getInstance(document, new FileOutputStream( "C:\\HelloWorld.pdf"));    

                         // 第三步:打开文档。    
                        document.open();    
                         // 第四步:在文档中增加一个段落。    
                        document.add( new Paragraph( "Hello World"+ ","+ "Hello iText"+ ","+ "Hello xDuan"));    
                } catch (DocumentException de) {    
                        System.err.println(de.getMessage());    
                } catch (IOException ioe) {    
                        System.err.println(ioe.getMessage());    
                }    
                 // 第五步:关闭文档。    
                document.close();    
                 // 检验程序是否正常运行到这里。    
                System.out.println( "快去看看吧");    
        }    
}

运行后,控制台输出语句:Hello World     快去看看吧
Snap2
 
进入C盘根目录,发现生成的HelloWorld.pdf文件,打开文件,看看内容是否正确。
Snap4
Snap5
 
Java操作PDF文件测试成功。但是现在我们项目没有任何实际意义。所以我们要添加数据库。
数据库为Oracle10g,用户名sys1,密码abc,表:emp
Snap6
 
表中数据很多,我在这里就不一一列举了。
Snap7
 
新建一个Class(类)DB.java ,代码如下:
package com.test;    

import java.io.FileOutputStream;    
import java.io.IOException;    
import java.sql.Connection;    
import java.sql.DriverManager;    
import java.sql.ResultSet;    
import java.sql.Statement;    

import com.lowagie.text.Anchor;    
import com.lowagie.text.Chunk;    
import com.lowagie.text.Document;    
import com.lowagie.text.DocumentException;    
import com.lowagie.text.Paragraph;    
import com.lowagie.text.html.HtmlWriter;    
import com.lowagie.text.pdf.PdfWriter;    

public class DB {    
         /**    
         * 利用iText,将数据库表中的数据写入PDF文件中。    
         *    
         * 作者:小段    
         */
    
         public static void main(String[] args) throws Exception{    

                System.out.println( "Hello Oracle");    
                 // 第一步:创建一个document对象。    
                Document document = new Document();    
                 try {    
                         // 第二步:    
                         // 创建一个PdfWriter实例,    
                         // 将文件输出流指向一个文件。    
                        PdfWriter pdf = PdfWriter.getInstance(document, new FileOutputStream( "C:\\DB.pdf"));    
                         // 第三步:打开文档。    
                        document.open();    
                         // 第四步:创建数据库连接        。                
                        Class.forName( "oracle.jdbc.driver.OracleDriver");    
                        Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:orcl", "sys1", "abc");    
                        Statement stmt = conn.createStatement();    
                        ResultSet rs = stmt.executeQuery( "select * from emp");    

                         while(rs.next()){         //循环取得所有数据    
                                String s="";    
                                 for( int i=1;i<=8;i++){    

                                        s+=rs.getObject(i)== null? "":rs.getObject(i).toString()+"\t";                                
                                }    
                                document.add( new Paragraph(s));    
                        }    
                        document.add( new Paragraph( "Hello World"+ "     fdgdsf "+ "Hello xDuan"));    

                } catch (DocumentException de) {    
                        System.err.println(de.getMessage());    
                } catch (IOException ioe) {    
                        System.err.println(ioe.getMessage());    
                }    

                 // 第五步:关闭文档。    
                document.close();    
                System.out.println( "快去看看吧");    
        }    
}

运行后,控制台显示信息:Hello Oracle     快去看看吧
Snap8
 
进入C盘根目录,发现生成了DB.pdf文件,打开看看内容是否正确。
Snap9
Snap10
 
成功!这是Java利用iText操作PDF文件,下次我们用另外一个工具BFO,呵呵,不是UFO。