java使用itext操作pdf

这两天一直在和pdf打交道,总结一下这两天的成果。这里需要注意itext使用的是itext 1.4,不同的版本可能在api的形式上存在不同,可能不能兼容,jar下载地址:http://cid-f41b44b9285d0b86.office.live.com/browse.aspx/%e5%85%ac%e5%bc%80%e6%96%87%e4%bb%b6%e5%a4%b9/J2EE%e5%ad%a6%e4%b9%a0%e8%b5%84%e6%96%99%e5%85%b1%e4%ba%ab

下面的这个例子中首先生成文件索引(类似word的链接),然后存在一个报表和将图片转换成pdf的形式,代码如下:

public void GenerateAllParts() {
        Document document 
= new Document();
        
        
try {
            PdfWriter.getInstance(document, 
new FileOutputStream("d:\\all.pdf"));
            
            
// 生成字体
            BaseFont bfChinese = BaseFont.createFont("STSongStd-Light""UniGB-UCS2-H"false);
            
// 标题字体
            Font f30 = new Font(bfChinese, 30, Font.NORMAL, Color.BLACK);
            
// 正文字体
            Font f12 = new Font(bfChinese, 12, Font.NORMAL, Color.BLACK);
            Font f6 
= new Font(bfChinese, 6, Font.NORMAL, Color.BLACK);
            Font f8 
= new Font(bfChinese, 8, Font.NORMAL, Color.BLACK);
            
            document.open();
            
            
// 标题
            document.add(new Paragraph("报表实例", f30));
            
// 换行
            document.add(new Chunk("\n\n"));
            
// 
            document.add(
                    
new Paragraph(
                    
new Chunk(".......................点击查看报表", f12)
                    .setLocalGoto(
"table")));
            
// 换行
            document.add(new Chunk("\n\n"));
            document.add(
                    
new Paragraph(
                    
new Chunk(".......................点击查看图片", f12)
                    .setLocalGoto(
"image")));
            document.add(
new Chunk("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"));
            
            
///////////////////////////////////////////////////
            
// 报表位置
            document.add(new Chunk("报表实例", f12).setLocalDestination("table"));
            
// 添加table实例
            PdfPTable table = new PdfPTable(5);
            table.setWidthPercentage(
100);
            table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);
            PdfPCell cell 
= new PdfPCell();
            cell.setBackgroundColor(
new Color(21314169));
            cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
            
            
// 表格标题
            cell.setPhrase(new Paragraph("标题一", f8));
            table.addCell(cell);
            cell.setPhrase(
new Paragraph("标题二", f8));
            table.addCell(cell);
            cell.setPhrase(
new Paragraph("标题三", f8));
            table.addCell(cell);
            cell.setPhrase(
new Paragraph("标题四", f8));
            table.addCell(cell);
            cell.setPhrase(
new Paragraph("标题五", f8));
            table.addCell(cell);
            
            
// 表格数据
            PdfPCell newcell = new PdfPCell();
            newcell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
            newcell.setPhrase(
new Paragraph("数据一", f8));
            table.addCell(newcell);
            newcell.setPhrase(
new Paragraph("数据二", f8));
            table.addCell(newcell);
            newcell.setPhrase(
new Paragraph("数据三", f8));
            table.addCell(newcell);
            newcell.setPhrase(
new Paragraph("数据四", f8));
            table.addCell(newcell);
            newcell.setPhrase(
new Paragraph("数据五", f8));
            table.addCell(newcell);
            
            document.add(table);
            
////////////////////////////////////////////////////////
            
            
//////////////////////////////////////////////////////////
            
// 添加连接
            document.add(new Chunk("图片实例", f12).setLocalDestination("image"));
            Image jpg 
= Image.getInstance("d:\\3.jpg");
            document.add(jpg);
            
//////////////////////////////////////////////////////////
            
            document.close();
        } 
catch (Exception e) {
            
// TODO: handle exception
        }
    }

下面这个例子演示如何将将word转换成pdf,这里使用的是openoffice来实现的,参考:http://www.javaeye.com/topic/352103

3. 实现代码:

     /**

     * 完成word2pdf的转换
     
*/
    
public void GeneratePdfFromWord() {
        Date date 
= new Date();
        
        OpenOfficeConnection connection 
= new SocketOpenOfficeConnection(8100);
        
        
try {
            connection.connect();    
             DocumentConverter converter 
= new OpenOfficeDocumentConverter(connection);
                converter.convert(
new File("d:\\test.doc"), new File("d:\\word2pdf.pdf"));
                
        } 
catch (Exception e) {
            
// TODO: handle exception
        } finally {
            
if(connection!=null){
                connection.disconnect();
                connection 
= null;
            }

        }
    }

 

 
2、用以下命令启动OpenOffice服务
         cd C:\Program Files\OpenOffice.org 3\program
         soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
 
posted @ 2010-12-30 13:13  qiang.xu  阅读(7287)  评论(0编辑  收藏  举报