目錄仿百度文庫解決方案(一)——總體思路 仿百度文庫解決方案(二)——利用Jacob調用MS Office轉換文檔為PDF 仿百度文庫解決方案(三)——利用JCom調用MS Office或者Acrobat API轉換文檔為PDF 仿百度文庫解決方案(四)——利用JODConverter調用OpenOffice.org服務轉換文檔為PDF 仿百度文庫解決方案(五)——利用SWFTools轉換PDF文檔為SWF 仿百度文庫解決方案(六)——利用FlexPaper顯示Flash(SWF)
1. JCom簡介JCom是日本的一個開源項目,其目的同前面介紹的Jacob一樣也是為了讓Java程序能夠訪問Windows平臺上的COM組件。利用JCom,可以在Java中控制幾乎所有的COM對象,而且它還帶有一些用于Excel操作的強大的輔助類。 使用Jcom主要用到ReleaseManager和IDispatch類。ReleaseManager類相當于一個容器,管理機器上的COM組件。配合IDispatch類可以創(chuàng)建COM組件對象。例如創(chuàng)建Excel應用程序的COM對象: ReleaseManager rmExcel = new ReleaseManager( ); IDispatch excelApp = new IDispatch(rmExcel,”Excel.Application”); 另外,在程序結束的最后階段需要調用ReleaseManager類中的release( )方法對創(chuàng)建的ReleaseManager進行資源釋放,以免內存溢出。 IDispatch類和Jacob中的Dispatch類相似,代表著COM組件對象,提供了訪問微軟COM組件對象的屬性和方法的接口。IDispatch類中常用的方法如下: get( )方法:獲取COM組件對象的屬性,返回一個java.lang.Object類型值。 put( )方法:設置COM組件對象的屬性,不返回值。 invoke( )方法:調用COM組件對象的方法,返回一個java.lang.Object類型值。不推薦使用,建議使用method方法。 method( )方法:和invoke( )方法功能一樣。 2. JCom調用MS Office COM組件轉換Office文檔為PDF2.1 前提條件JCom是日本人開發(fā)的一個開源項目,和Jacob類似,其也是用來調用COM自動化組件。自然JDK的運行環(huán)境也是必不可少。JCom也可以利用Microsoft Office API轉換文檔,那么需要安裝Microsoft Office2007或者以上版本,同時Office2007仍需要安裝有Microsoft Save as PDF or XPS插件。JCom除了調用Microsoft Office API轉換文檔為PDF格式的方法之外,還可以利用Adobe Acrobat軟件的CreatePDF函數直接將Office格式的文檔轉換為PDF。因此,如果需要使用Adobe Acrobat轉換文檔,需要再安裝有Adobe Acrobat軟件。 2.2 安裝配置下載JCom包,將其解壓縮后,提取其中的jcom.jar包配置到Java項目的類路徑中,同時也需要將其中的jcom.dll文件放置到windows系統(tǒng)System32目錄下,如果不想污染System32目錄中的dll文件,也可以將其放置到本機JDK安裝目錄下的bin文件夾中。 2.3 實現(xiàn)類似Jacob轉換文檔為PDF,轉換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");//啟動word app.put("Visible", false); //設置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});//轉換文檔為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調用Acrobat轉換Office文檔為PDF格式除了調用MS Office轉換文檔為PDF的方法之外,還可以調用Adobe Acrobat API轉換Office文檔為PDF格式,下面是JCom的實現(xiàn)方法,當然也可以用Jacob實現(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 轉載說明:本文系作者原創(chuàng),轉載時請注明文章出處:肖恩也有夢想 博客園,請尊重作者的勞動成果,謝謝! |
|