小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

仿百度文庫(kù)解決方案(三)——利用JCom調(diào)用MS Office或者Acrobat API轉(zhuǎn)換文檔為PDF

 Tom.Lin 2014-01-13

目錄

仿百度文庫(kù)解決方案(一)——總體思路

仿百度文庫(kù)解決方案(二)——利用Jacob調(diào)用MS Office轉(zhuǎn)換文檔為PDF

仿百度文庫(kù)解決方案(三)——利用JCom調(diào)用MS Office或者Acrobat API轉(zhuǎn)換文檔為PDF

仿百度文庫(kù)解決方案(四)——利用JODConverter調(diào)用OpenOffice.org服務(wù)轉(zhuǎn)換文檔為PDF

仿百度文庫(kù)解決方案(五)——利用SWFTools轉(zhuǎn)換PDF文檔為SWF

仿百度文庫(kù)解決方案(六)——利用FlexPaper顯示Flash(SWF)

 

1. JCom簡(jiǎn)介

  JCom是日本的一個(gè)開源項(xiàng)目,其目的同前面介紹的Jacob一樣也是為了讓Java程序能夠訪問(wèn)Windows平臺(tái)上的COM組件。利用JCom,可以在Java中控制幾乎所有的COM對(duì)象,而且它還帶有一些用于Excel操作的強(qiáng)大的輔助類。

  使用Jcom主要用到ReleaseManager和IDispatch類。ReleaseManager類相當(dāng)于一個(gè)容器,管理機(jī)器上的COM組件。配合IDispatch類可以創(chuàng)建COM組件對(duì)象。例如創(chuàng)建Excel應(yīng)用程序的COM對(duì)象:

  ReleaseManager rmExcel = new ReleaseManager( );

  IDispatch excelApp = new IDispatch(rmExcel,”Excel.Application”);

  另外,在程序結(jié)束的最后階段需要調(diào)用ReleaseManager類中的release( )方法對(duì)創(chuàng)建的ReleaseManager進(jìn)行資源釋放,以免內(nèi)存溢出。

IDispatch類和Jacob中的Dispatch類相似,代表著COM組件對(duì)象,提供了訪問(wèn)微軟COM組件對(duì)象的屬性和方法的接口。IDispatch類中常用的方法如下:

get( )方法:獲取COM組件對(duì)象的屬性,返回一個(gè)java.lang.Object類型值。

put( )方法:設(shè)置COM組件對(duì)象的屬性,不返回值。

invoke( )方法:調(diào)用COM組件對(duì)象的方法,返回一個(gè)java.lang.Object類型值。不推薦使用,建議使用method方法。

method( )方法:和invoke( )方法功能一樣。

2. JCom調(diào)用MS Office COM組件轉(zhuǎn)換Office文檔為PDF

2.1 前提條件

  JCom是日本人開發(fā)的一個(gè)開源項(xiàng)目,和Jacob類似,其也是用來(lái)調(diào)用COM自動(dòng)化組件。自然JDK的運(yùn)行環(huán)境也是必不可少。JCom也可以利用Microsoft Office API轉(zhuǎn)換文檔,那么需要安裝Microsoft Office2007或者以上版本,同時(shí)Office2007仍需要安裝有Microsoft Save as PDF or XPS插件。JCom除了調(diào)用Microsoft Office API轉(zhuǎn)換文檔為PDF格式的方法之外,還可以利用Adobe Acrobat軟件的CreatePDF函數(shù)直接將Office格式的文檔轉(zhuǎn)換為PDF。因此,如果需要使用Adobe Acrobat轉(zhuǎn)換文檔,需要再安裝有Adobe Acrobat軟件。

2.2 安裝配置

  下載JCom包,將其解壓縮后,提取其中的jcom.jar包配置到Java項(xiàng)目的類路徑中,同時(shí)也需要將其中的jcom.dll文件放置到windows系統(tǒng)System32目錄下,如果不想污染System32目錄中的dll文件,也可以將其放置到本機(jī)JDK安裝目錄下的bin文件夾中。

2.3 實(shí)現(xiàn)

  類似Jacob轉(zhuǎn)換文檔為PDF,轉(zhuǎn)換Word為PDF格式的代碼如下:

復(fù)制代碼
public static void word2PDF(String inputFile,String pdfFile){
        ReleaseManager rm = null;
        IDispatch app = null;
        try {
                rm = new ReleaseManager();
                app = new IDispatch(rm, "Word.Application");//啟動(dòng)word
                app.put("Visible", false);    //設(shè)置word不可見
                IDispatch docs = (IDispatch) app.get("Documents");    //獲得word中所有打開的文檔
                IDispatch doc = (IDispatch) docs.method("Open", new Object[]{inputFile,false,true});//打開文檔
                doc.method("SaveAs", new Object[]{pdfFile,17});//轉(zhuǎn)換文檔為pdf格式
                doc.method("Close", new Object[]{false});
                app.method("Quit", null);
        } catch (Exception e) {
                 e.printStackTrace();
        } finally {
                try {
                        app=null;
                        rm.release();
                        rm = null;
                } catch (Exception e) {
                     e.printStackTrace();
                }
        }
    }
復(fù)制代碼

3. JCom調(diào)用Acrobat轉(zhuǎn)換Office文檔為PDF格式

  除了調(diào)用MS Office轉(zhuǎn)換文檔為PDF的方法之外,還可以調(diào)用Adobe Acrobat API轉(zhuǎn)換Office文檔為PDF格式,下面是JCom的實(shí)現(xiàn)方法,當(dāng)然也可以用Jacob實(shí)現(xiàn),這里就不做研究了。

復(fù)制代碼
 1 public void convert2PDF(String inputFile, String pdfFile)  {
 2         
 3 
 4         ReleaseManager rm = new ReleaseManager();
 5         IDispatch app;
 6         try {
 7             app = new IDispatch(rm, "PDFMakerAPI.PDFMakerApp");
 8             app.method("CreatePDF",new Object[]{inputFile,pdfFile});
 9             System.out.println("conversion completed!");
10         } catch (JComException e) {
11             e.printStackTrace();
12         }finally{
13              app=null;
14              rm.release();
15              rm = null;
16         }   
17       
18     }
復(fù)制代碼

 

注:

  源代碼下載地址:DocConverter

  轉(zhuǎn)載說(shuō)明本文系作者原創(chuàng),轉(zhuǎn)載時(shí)請(qǐng)注明文章出處:肖恩也有夢(mèng)想 博客園,請(qǐng)尊重作者的勞動(dòng)成果,謝謝!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多