成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

仿百度文庫解決方案之二:Jacob調(diào)用轉(zhuǎn)換

開發(fā) 前端
Jacob類庫中只有兩個包:com.jacob.activex和com.jacob.com。com.jacob.activex包建立在com.jacob.com基礎(chǔ)之上,主要包含了ActiveXComponent類。

Jacob簡介

Jacob是Java與COM組件橋接的縮寫,即JAVA-COM Bridge。通過使用Jacob類庫,我們可以很方便地在Java程序中調(diào)用COM自動化組件。Jacob最初是由美國人Dan Alder在Inventure公司擔(dān)任CTO時編寫的,目的是為了方便眾多的程序員在Java2虛擬機上,調(diào)用Win32平臺上COM自動化服務(wù)器中的組件。當(dāng)Jacob項目以開源的方式在網(wǎng)絡(luò)上公布以后,越來越多的人開始參與項目的研發(fā)與改進中去。

Jacob類庫中只有兩個包:com.jacob.activex和com.jacob.com。com.jacob.activex包建立在com.jacob.com基礎(chǔ)之上,主要包含了ActiveXComponent類。com.jacob.com中有一個非常基礎(chǔ)的類JacobObject,該包中比較常用的兩個類Dispatch和Variant便是繼承自JacobObject。

Dispatch類代表COM自動化組件中的對象,提供了訪問COM對象的API。Dispatch類中常用的方法有:

call( )方法:調(diào)用COM對象的方法,返回Variant類型值。

invoke( )方法:和call方法作用相同,但是不返回值。

get( )方法:獲取COM對象屬性,返回variant類型值。

put( )方法:設(shè)置COM對象屬性。

ActiveXComponent類繼承自Dispatch類,在內(nèi)部封裝了Dispatch對象,使用該類加載COM組件。 并且提供了訪問COM組件對象的屬性和方法的接口。ActiveXComponent類提供了比Dispatch類更方便的獲取屬性和設(shè)置屬性的方法:getProperty( ),setProperty( )。

Variant類映射COM對象中的Variant數(shù)據(jù)結(jié)構(gòu),提供Java和COM的數(shù)據(jù)交互。其本質(zhì)就是一種數(shù)據(jù)類型,可以被轉(zhuǎn)換成任何數(shù)據(jù)類型,如int,String,甚至Dispatch對象。

MS Office COM 對象模型

Microsoft Office2007之前的Office版本并沒有提供轉(zhuǎn)換文檔為PDF格式的支持,另外,Office2007還需要安裝有Microsoft Save as PDF or XPS插件才支持PDF格式轉(zhuǎn)換,而Office2010不需要安裝插件則自帶有轉(zhuǎn)換Office文檔為PDF格式的API。因此,建議使用Office 2010。

通過查詢MSDN Office 2010開發(fā)人員手冊,經(jīng)過分析后得出圖2-1所示的Office COM對象模型:

Office COM對象模型圖2-1 Office COM對象模型

Microsoft Office中每個應(yīng)用程序中都包含一個Application對象,但是每個應(yīng)用程序中的文檔對象卻不一樣,Word中Documents對象代表Word應(yīng)用程序中所有打開的word文檔集合,Document對象代表一篇word文檔。詳細(xì)的文檔對象結(jié)構(gòu)如圖2-1所示。其中Document,Workbook,Presentation中的SaveAs或者ExportAsFixedFormat方法可用于將文檔轉(zhuǎn)換為PDF。

Jacob調(diào)用MS Office COM自動化組件轉(zhuǎn)換Office文檔為PDF

算法流程圖如2-2所示:

Jacob調(diào)用MS Office轉(zhuǎn)換文檔為PDF

圖2-2 Jacob調(diào)用MS Office COM組件轉(zhuǎn)換文檔為PDF算法流程

接下來是代碼部分:

#p#

第一步,對于Office文檔,不同格式的文檔需要加載不同的COM組件,例如Word文件需要加載Word COM組件。Jacob中加載COM組件是利用ActiveXComponent類,例如,加載Word COM自動化組件:

  1. //Word.Application代表COM OLE編程標(biāo)識,可查詢MSDN得到  
  2. ActiveXComponent app = new ActiveXComponent("Word.Application");  
  3. //設(shè)置Word不可見  
  4. app.setProperty("Visible",false); 

第二步,獲得文檔對象集合,Word中Documents對象代表Word應(yīng)用程序中所有打開的Word文檔,范例如下:

  1. //調(diào)用Application對象的Documents屬性,獲得Documents對象  
  2. Dispatch docs = app.getProperty("Documents").toDispatch(); 

第三步,打開文件,并執(zhí)行轉(zhuǎn)換。Word范例如下:

  1. Dispatch doc = Dispatch.call(docs,  
  2.                            "Open",//調(diào)用Documents對象的Open方法  
  3.                             inputFile,// 輸入文件路徑全名  
  4.                             false//ConfirmConversions,設(shè)置為false表示不顯示轉(zhuǎn)換框  
  5.                              true//ReadOnly  
  6.                             );  
  7.  
  8. Dispatch.call(doc,//要轉(zhuǎn)換的文檔  
  9.                "SaveAS",  
  10.                 pdfFile,//要保存的PDF文件名  
  11.                 wdFormatPDF//轉(zhuǎn)換后的文件格式宏,值為17,可查詢MSDN得到   
  12.                 ); 

第四步,關(guān)閉應(yīng)用程序。Word范例:

  1. //關(guān)閉打開的Word文件  
  2. Dispatch.call(doc,  
  3.               "Close",  
  4.                false//設(shè)置不保存改變);  
  5. //關(guān)閉Word應(yīng)用程序  
  6. app.invoke("Quit",0); 

轉(zhuǎn)換Word文檔為PDF格式的詳細(xì)代碼如下:

  1. word2PDF   
  2.  
  3. public static void word2PDF(String inputFile,String pdfFile){  
  4.         //打開word應(yīng)用程序  
  5.         ActiveXComponent app = new ActiveXComponent("Word.Application");  
  6.         //設(shè)置word不可見  
  7.         app.setProperty("Visible"false);  
  8.         //獲得word中所有打開的文檔,返回Documents對象  
  9.         Dispatch docs = app.getProperty("Documents").toDispatch();  
  10.         //調(diào)用Documents對象中Open方法打開文檔,并返回打開的文檔對象Document  
  11.         Dispatch doc = Dispatch.call(docs,  
  12.                                     "Open",  
  13.                                     inputFile,  
  14.                                     false,  
  15.                                     true 
  16.                                     ).toDispatch();  
  17.         //調(diào)用Document對象的SaveAs方法,將文檔保存為pdf格式  
  18.         /*  
  19.         Dispatch.call(doc,  
  20.                     "SaveAs",  
  21.                     pdfFile,  
  22.                     wdFormatPDF        //word保存為pdf格式宏,值為17  
  23.                     );  
  24.                     */ 
  25.         Dispatch.call(doc,  
  26.                 "ExportAsFixedFormat",  
  27.                 pdfFile,  
  28.                 wdFormatPDF        //word保存為pdf格式宏,值為17  
  29.                 );  
  30.         //關(guān)閉文檔  
  31.         Dispatch.call(doc, "Close",false);  
  32.         //關(guān)閉word應(yīng)用程序  
  33.         app.invoke("Quit"0);  
  34.           
  35.     } 

源代碼下載地址:DocConverter

原文鏈接:http://www.cnblogs.com/luckyxiaoxuan/archive/2012/06/13/2548355.html

【編輯推薦】

 

責(zé)任編輯:張偉 來源: 肖恩也有夢想的博客
相關(guān)推薦

2012-06-19 13:25:15

Web

2012-06-19 13:32:23

Web

2012-06-18 16:29:48

Web

2012-06-19 13:45:57

Web

2012-06-19 13:42:08

Web

2012-07-16 14:43:32

silverlight

2015-10-28 13:40:28

高仿百度糯米源碼

2012-10-19 09:47:30

百度云百度音樂云計算

2011-06-02 17:28:24

網(wǎng)站收錄

2012-11-27 09:51:54

百度三星云解決方案

2011-06-29 08:31:56

收錄

2015-12-02 17:22:03

百度地圖

2011-05-24 10:40:12

SEO

2011-10-21 09:28:25

百度地圖API

2020-09-15 19:29:40

搜索
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欲色av | 国产午夜精品一区二区三区嫩草 | 日韩精品一区二区三区久久 | 九九成人 | 青青久久 | 国产欧美在线播放 | 91麻豆久久久 | 亚洲精品综合 | 欧美一级二级视频 | 欧美精品福利 | 成人一区二| 国产精品亚洲视频 | 亚洲国产精品网站 | 亚洲伊人久久综合 | 国产免费一区 | 成人网视频 | 日韩一区二区在线播放 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 久久伊人亚洲 | 欧美亚洲国产日韩 | 久久久久九九九女人毛片 | 九九精品在线 | 亚洲视频在线观看 | 黄色香蕉视频在线观看 | 免费观看的黄色网址 | 亚洲在线免费 | 成人免费观看视频 | 一区视频 | 午夜成人在线视频 | 久久一| 日本精品裸体写真集在线观看 | 亚洲美女一区 | 成人妇女免费播放久久久 | 日韩欧美一区二区三区免费观看 | 欧美日韩精品久久久免费观看 | 成人在线免费观看视频 | 日本字幕在线观看 | 男女羞羞网站 | 精品视频一区二区在线观看 | 草久在线| 日韩欧美国产精品一区二区 |