java使用itext操作pdf

來源:互聯網
上載者:User

這兩天一直在和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(213, 141, 69));
            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;
            }

        }
    }

 

1、安裝OpenOffice 3:下載路徑:http://zh.openoffice.org/new/zh_cn/downloads.html 2、用以下命令啟動OpenOffice服務         cd C:\Program Files\OpenOffice.org 3\program
         soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.