java調用com組件將office文件轉換成pdf (同發csdn)

 

在很多企業級應用中都涉及到將office圖片轉換成pdf進行保存或者發佈的場景,因爲pdf格式的文檔方便進行加密和權限控制(類似於百度文庫)。總結起來目前將office文件轉換

成pdf的方法主要有兩種:
 1、利用jcob調用ms office的com組件,將office文檔轉換成pdf。
 2、利用jcob調用acrobat將office文檔轉換成pdf。

 在實際使用中發現,由於office不同所以本的文件格式不一致,所以任何第三方的轉化工具都不可能完美的兼容所有office版本,最好的方案就是調用ms office提供的com組件來進

行轉換,就算office高版本出現,我們要做的也只是升級我們的office版本而已。

 首先,利用office的com組件進行文檔轉換首先需要到jacob官網下載一個jacob.jar和jacob.dll,jacob.dll需要放到windows的system32下面,jacob.jar引用到java工程中。

 其次,編寫代碼,初始化word進程,並返回word的所有document對象:
         //打開word應用程序
         ActiveXComponent app = new ActiveXComponent("Word.Application");
         //設置word不可見,否則會彈出word界面
         app.setProperty("Visible", false);        
  //獲得word中所有打開的文檔,返回Documents對象
         Dispatch docs = app.getProperty("Documents").toDispatch();

 第三步,打開我們要轉換的word文檔:
  //調用Documents對象中Open方法打開文檔,並返回打開的文檔對象Document
         Dispatch doc = Dispatch.call(docs,
                                     "Open",
                                     "xxx.doc",
                                     false,
                                     true
                                     ).toDispatch();
 
 最後,另存我們剛纔打開的文檔,並關閉word進程:
  //調用Document對象的SaveAs方法,將文檔保存爲pdf格式
         Dispatch.call(doc,
                 "ExportAsFixedFormat",
                 "xxx.pdf",
                 wdFormatPDF        //word保存爲pdf格式
                 );         //關閉文檔
         Dispatch.call(doc, "Close",false);
         //關閉word應用程序
         app.invoke("Quit", 0);

 

附錄:完整代碼

 public static void word2PDF(String inputFile,String pdfFile){
         //打開word應用程序
         ActiveXComponent app = new ActiveXComponent("Word.Application");
         //設置word不可見,否則會彈出word界面
         app.setProperty("Visible", false);
         //獲得word中所有打開的文檔,返回Documents對象
         Dispatch docs = app.getProperty("Documents").toDispatch();
         //調用Documents對象中Open方法打開文檔,並返回打開的文檔對象Document
         Dispatch doc = Dispatch.call(docs,
                                     "Open",
                                     inputFile,
                                     false,
                                     true
                                     ).toDispatch();
         //調用Document對象的SaveAs方法,將文檔保存爲pdf格式
         Dispatch.call(doc,
                 "ExportAsFixedFormat",
                 pdfFile,
                 wdFormatPDF        //word保存爲pdf格式
                 );
         //關閉文檔
         Dispatch.call(doc, "Close",false);
         //關閉word應用程序
         app.invoke("Quit", 0);
     }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章