目錄仿百度文庫(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文檔為PDF2.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格式的代碼如下:
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(); } } } 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),這里就不做研究了。
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 }
注: 源代碼下載地址:DocConverter 轉(zhuǎn)載說(shuō)明:本文系作者原創(chuàng),轉(zhuǎn)載時(shí)請(qǐng)注明文章出處:肖恩也有夢(mèng)想 博客園,請(qǐng)尊重作者的勞動(dòng)成果,謝謝! |
|
|