posts - 33,  comments - 11,  trackbacks - 0

           

          項目開發過程中,需求涉及到了各種文檔轉換為HTML或者網頁易顯示格式,現在將實現方式整理如下:
          一、使用Jacob轉換Word,Excel為HTML

          “JACOB一個Java-COM中間件.通過這個組件你可以在Java應用程序中調用COM組件和Win32 libraries。”

          首先下載Jacob包,JDK1.5以上需要使用Jacob1.9版本(JDK1.6尚未測試),與先前的Jacob1.7差別不大

          1、將壓縮包解壓后,Jacob.jar添加到Libraries中;

          2、將Jacob.dll放至“WINDOWS\SYSTEM32”下面。

          需要注意的是:
          【使用IDE啟動Web服務器時,系統讀取不到Jacob.dll,例如用MyEclipse啟動Tomcat,就需要將dll文件copy到MyEclipse安裝目錄的“jre\bin”下面。
          一般系統沒有加載到Jacob.dll文件時,報錯信息為:“java.lang.UnsatisfiedLinkError: no jacob in java.library.path”】

          新建類:

           1public class JacobUtil   
           2{   
           3    public static final int WORD_HTML = 8;   
           4  
           5    public static final int WORD_TXT = 7;   
           6  
           7    public static final int EXCEL_HTML = 44;   
           8  
           9    /**  
          10     * WORD轉HTML  
          11     * @param docfile WORD文件全路徑  
          12     * @param htmlfile 轉換后HTML存放路徑  
          13     */
            
          14    public static void wordToHtml(String docfile, String htmlfile)   
          15    {   
          16        ActiveXComponent app = new ActiveXComponent("Word.Application"); // 啟動word   
          17        try  
          18        {   
          19            app.setProperty("Visible"new Variant(false));   
          20            Dispatch docs = app.getProperty("Documents").toDispatch();   
          21            Dispatch doc = Dispatch.invoke(   
          22                    docs,   
          23                    "Open",   
          24                    Dispatch.Method,   
          25                    new Object[] { docfile, new Variant(false),   
          26                            new Variant(true) }
          new int[1]).toDispatch();   
          27            Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {   
          28                    htmlfile, new Variant(WORD_HTML) }
          new int[1]);   
          29            Variant f = new Variant(false);   
          30            Dispatch.call(doc, "Close", f);   
          31        }
             
          32        catch (Exception e)   
          33        {   
          34            e.printStackTrace();   
          35        }
             
          36        finally  
          37        {   
          38            app.invoke("Quit"new Variant[] {});   
          39        }
             
          40    }
             
          41  
          42    /**  
          43     * EXCEL轉HTML  
          44     * @param xlsfile EXCEL文件全路徑  
          45     * @param htmlfile 轉換后HTML存放路徑  
          46     */
            
          47    public static void excelToHtml(String xlsfile, String htmlfile)   
          48    {   
          49        ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 啟動word   
          50        try  
          51        {   
          52            app.setProperty("Visible"new Variant(false));   
          53            Dispatch excels = app.getProperty("Workbooks").toDispatch();   
          54            Dispatch excel = Dispatch.invoke(   
          55                    excels,   
          56                    "Open",   
          57                    Dispatch.Method,   
          58                    new Object[] { xlsfile, new Variant(false),   
          59                            new Variant(true) }
          new int[1]).toDispatch();   
          60            Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {   
          61                    htmlfile, new Variant(EXCEL_HTML) }
          new int[1]);   
          62            Variant f = new Variant(false);   
          63            Dispatch.call(excel, "Close", f);   
          64        }
             
          65        catch (Exception e)   
          66        {   
          67            e.printStackTrace();   
          68        }
             
          69        finally  
          70        {   
          71            app.invoke("Quit"new Variant[] {});   
          72        }
             
          73    }
             
          74  
          75}
            
          76

          當時我在找轉換控件時,發現網易也轉載了一偏關于Jacob使用幫助,但其中出現了比較嚴重的錯誤:String htmlfile = "C:\\AA";

          只指定到了文件夾一級,正確寫法是String htmlfile = "C:\\AA\\xxx.html";

           

          到此WORD/EXCEL轉換HTML就已經差不多了,相信大家應該很清楚了:)

           

          二、使用XPDF將PDF轉換為HTML

           

          1、下載xpdf最新版本,地址:http://www.foolabs.com/xpdf/download.html

          我下載的是xpdf-3.02pl2-win32.zip

           

          2、下載中文支持包

          我下載的是xpdf-chinese-simplified.tar.gz

           

          3、下載pdftohtml支持包

          地址:http://sourceforge.net/projects/pdftohtml/

          我下載的是:pdftohtml-0.39-win32.tar.gz

           

          4、解壓調試

          1) 先將xpdf-3.02pl2-win32.zip解壓,解壓后的內容可根據需要進行刪減,如果只需要轉換為txt格式,其他的exe文件可以刪除,只保留pdftotext.exe,以此類推;

          2) 然后將xpdf-chinese-simplified.tar.gz解壓到剛才xpdf-3.02pl2-win32.zip的解壓目錄;

          3) 將pdftohtml-0.39-win32.tar.gz解壓,pdftohtml.exe解壓到xpdf-3.02pl2-win32.zip的解壓目錄;

          4) 目錄結構:

           +---[X:\xpdf]

                     |-------各種轉換用到的exe文件

                     |

                     |-------xpdfrc

                     |

                     +------[X:\xpdf\xpdf-chinese-simplified]

                                                |

                                                |

                                                +-------很多轉換時需要用到的字符文件

           

          xpdfrc:此文件是用來聲明轉換字符集對應路徑的文件

           

          5) 修改xpdfrc文件(文件原名為sample-xpdfrc)

          修改文件內容為:

          Txt代碼 復制代碼 收藏代碼
          #----- begin Chinese Simplified support package   
          cidToUnicode    Adobe
          -GB1       xpdf-chinese-simplified\Adobe-GB1.cidToUnicode   
          unicodeMap      ISO
          -2022-CN     xpdf-chinese-simplified\ISO-2022-CN.unicodeMap   
          unicodeMap      EUC
          -CN          xpdf-chinese-simplified\EUC-CN.unicodeMap   
          unicodeMap  GBK    xpdf
          -chinese-simplified\GBK.unicodeMap   
          cMapDir         Adobe
          -GB1       xpdf-chinese-simplified\CMap   
          toUnicodeDir                    xpdf
          -chinese-simplified\CMap   
          fontDir  C:\WINDOWS\Fonts   
          displayCIDFontTT Adobe
          -GB1 C:\WINDOWS\Fonts\simhei.ttf   
          #
          ----- end Chinese Simplified support package  

          6) 創建bat文件pdftohtml.bat(放置的路徑不能包含空格)

          內容為:

          Txt代碼 復制代碼 收藏代碼
          @echo off   
          set folderPath
          =%1  
          set filePath
          =%2  
          cd 
          /%folderPath%   
          pdftohtml 
          -enc GBK %filePath%   
          exit 
          7) 創建類

          JAVA代碼
          public class ConvertPdf   
          {   
              
          private static String INPUT_PATH;   
              
          private static String PROJECT_PATH;   
                 
              
          public static void convertToHtml(String file, String project)   
              
          {   
                  INPUT_PATH 
          = file;   
                  PROJECT_PATH 
          = project;   
                  
          if(checkContentType()==0)   
                  
          {   
                      toHtml();   
                  }
             
              }
             
                 
              
          private static int checkContentType()   
              
          {   
                  String type 
          = INPUT_PATH.substring(INPUT_PATH.lastIndexOf("."+ 1, INPUT_PATH.length())   
                          .toLowerCase();   
                  
          if (type.equals("pdf"))   
                      
          return 0;   
                  
          else  
                      
          return 9;   
              }
             
                 
              
          private static void toHtml()   
              
          {   
                  
          if(new File(INPUT_PATH).isFile())   
                  
          {   
                      
          try  
                      
          {   
                          String cmd 
          = "cmd /c start X:\\pdftohtml.bat \"" + PROJECT_PATH + "\" \"" + INPUT_PATH + "\"";   
                          Runtime.getRuntime().exec(cmd);   
                      }
             
                      
          catch (IOException e)   
                      
          {   
                          e.printStackTrace();   
                      }
             
                  }
             
              }
             
                 
          }
            

          String cmd = "....";此處代碼是調用創建的bat文件進行轉換 

           

          8) 測試轉換
           JAVA代碼復制代碼 收藏代碼

          public static void main(String[] args)   
          {   
              ConvertPdf.convertToHtml(
          "C:\\test.pdf""X:\\xpdf");   
          }
            
          posted on 2011-04-20 14:26 方濤升 閱讀(14733) 評論(3)  編輯  收藏 所屬分類: j2ee

          FeedBack:
          # re: java將Word/Excel/PDF文件轉換成HTML整理
          2011-09-19 16:07 | 529597089
          1) 先將xpdf-3.02pl2-win32.zip解壓,解壓后的內容可根據需要進行刪減,如果只需要轉換為txt格式,其他的exe文件可以刪除,只保留pdftotext.exe,以此類推;

          2) 然后將xpdf-chinese-simplified.tar.gz解壓到剛才xpdf-3.02pl2-win32.zip的解壓目錄;

          3) 將pdftohtml-0.39-win32.tar.gz解壓,pdftohtml.exe解壓到xpdf-3.02pl2-win32.zip的解壓目錄;

          這些怎么配置?我咋老配置不對!  回復  更多評論
            
          # re: java將Word/Excel/PDF文件轉換成HTML整理
          2013-10-16 09:44 | ;;
          Source: Microsoft Excel
          Description: 類 Workbook 的 SaveAs 方法無效


          請問這個怎么解決  回復  更多評論
            
          # re: java將Word/Excel/PDF文件轉換成HTML整理
          2014-02-28 15:23 | 諾諾
          不管用啊,有沒有源碼給分享下啊~~~  回復  更多評論
            
          <2011年4月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 施甸县| 凤城市| 盐城市| 德保县| 涪陵区| 宁海县| 西平县| 遵化市| 仪征市| 郓城县| 菏泽市| 偃师市| 开远市| 泽库县| 邯郸市| 无极县| 巴楚县| 乡宁县| 开鲁县| 景泰县| 本溪| 临夏市| 安宁市| 吉安县| 阳高县| 宁蒗| 阳春市| 于都县| 商洛市| 莱州市| 武山县| 长汀县| 阆中市| 庆安县| 双牌县| 桑日县| 阿克苏市| 威海市| 青州市| 罗山县| 焦作市|