<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    CONAN ZONE

    你越掙扎我就越興奮

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      0 Posts :: 282 Stories :: 0 Comments :: 0 Trackbacks

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

    “JACOB一個Java-COM中間件.通過這個組件你可以在Java應(yīng)用程序中調(diào)用COM組件和Win32 libraries。”

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

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

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

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

    新建類:

    Java代碼 復(fù)制代碼
    1. public 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轉(zhuǎn)HTML  
    11.      * @param docfile WORD文件全路徑  
    12.      * @param htmlfile 轉(zhuǎn)換后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轉(zhuǎn)HTML  
    44.      * @param xlsfile EXCEL文件全路徑  
    45.      * @param htmlfile 轉(zhuǎn)換后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. }  

    當(dāng)時我在找轉(zhuǎn)換控件時,發(fā)現(xiàn)網(wǎng)易也轉(zhuǎn)載了一偏關(guān)于Jacob使用幫助,但其中出現(xiàn)了比較嚴(yán)重的錯誤:String htmlfile = "C:\\AA";

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

     

    到此WORD/EXCEL轉(zhuǎn)換HTML就已經(jīng)差不多了,相信大家應(yīng)該很清楚了:)

     

    二、使用XPDF將PDF轉(zhuǎn)換為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、解壓調(diào)試

    1) 先將xpdf-3.02pl2-win32.zip解壓,解壓后的內(nèi)容可根據(jù)需要進(jìn)行刪減,如果只需要轉(zhuǎn)換為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) 目錄結(jié)構(gòu):

     +---[X:\xpdf]

               |-------各種轉(zhuǎn)換用到的exe文件

               |

               |-------xpdfrc

               |

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

                                          |

                                          |

                                          +-------很多轉(zhuǎn)換時需要用到的字符文件

     

    xpdfrc:此文件是用來聲明轉(zhuǎn)換字符集對應(yīng)路徑的文件

     

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

    修改文件內(nèi)容為:

     

    Txt代碼 復(fù)制代碼
    1. #----- begin Chinese Simplified support package   
    2. cidToUnicode    Adobe-GB1       xpdf-chinese-simplified\Adobe-GB1.cidToUnicode   
    3. unicodeMap      ISO-2022-CN     xpdf-chinese-simplified\ISO-2022-CN.unicodeMap   
    4. unicodeMap      EUC-CN          xpdf-chinese-simplified\EUC-CN.unicodeMap   
    5. unicodeMap  GBK    xpdf-chinese-simplified\GBK.unicodeMap   
    6. cMapDir         Adobe-GB1       xpdf-chinese-simplified\CMap   
    7. toUnicodeDir                    xpdf-chinese-simplified\CMap   
    8. fontDir  C:\WINDOWS\Fonts   
    9. displayCIDFontTT Adobe-GB1 C:\WINDOWS\Fonts\simhei.ttf   
    10. #----- end Chinese Simplified support package  

     

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

    內(nèi)容為:

     

    Txt代碼 復(fù)制代碼
    1. @echo off   
    2. set folderPath=%1  
    3. set filePath=%2  
    4. cd /d %folderPath%   
    5. pdftohtml -enc GBK %filePath%   
    6. exit  

     

    7) 創(chuàng)建類

     

    Java代碼 復(fù)制代碼
    1. public class ConvertPdf   
    2. {   
    3.     private static String INPUT_PATH;   
    4.     private static String PROJECT_PATH;   
    5.        
    6.     public static void convertToHtml(String file, String project)   
    7.     {   
    8.         INPUT_PATH = file;   
    9.         PROJECT_PATH = project;   
    10.         if(checkContentType()==0)   
    11.         {   
    12.             toHtml();   
    13.         }   
    14.     }   
    15.        
    16.     private static int checkContentType()   
    17.     {   
    18.         String type = INPUT_PATH.substring(INPUT_PATH.lastIndexOf(".") + 1, INPUT_PATH.length())   
    19.                 .toLowerCase();   
    20.         if (type.equals("pdf"))   
    21.             return 0;   
    22.         else  
    23.             return 9;   
    24.     }   
    25.        
    26.     private static void toHtml()   
    27.     {   
    28.         if(new File(INPUT_PATH).isFile())   
    29.         {   
    30.             try  
    31.             {   
    32.                 String cmd = "cmd /c start X:\\pdftohtml.bat \"" + PROJECT_PATH + "\" \"" + INPUT_PATH + "\"";   
    33.                 Runtime.getRuntime().exec(cmd);   
    34.             }   
    35.             catch (IOException e)   
    36.             {   
    37.                 e.printStackTrace();   
    38.             }   
    39.         }   
    40.     }   
    41.        
    42. }  

    String cmd = "....";此處代碼是調(diào)用創(chuàng)建的bat文件進(jìn)行轉(zhuǎn)換 

     

    8) 測試轉(zhuǎn)換

     

     

    Java代碼 復(fù)制代碼
    1. public static void main(String[] args)   
    2. {   
    3.     ConvertPdf.convertToHtml("C:\\test.pdf""X:\\xpdf");   
    4. }  

     

     

    以上就是整理的內(nèi)容,后續(xù)還會添加視頻轉(zhuǎn)換為FLV格式,如果需要的話:)

    說的不是很詳細(xì),碰到問題的朋友可以自己努力解決一下:)

    posted on 2009-02-17 14:57 CONAN 閱讀(1006) 評論(0)  編輯  收藏 所屬分類: J2SE
    主站蜘蛛池模板: 永久免费AV无码国产网站| 日本亚洲免费无线码| 亚洲国产综合精品中文字幕| 亚洲精品国产精品| 精品免费久久久久久成人影院| 亚洲码欧美码一区二区三区| 午夜高清免费在线观看| 国产精品亚洲专区无码不卡| 免费在线观看你懂的| www在线观看免费视频| 亚洲午夜久久久久久久久电影网| 成人自慰女黄网站免费大全| 久久精品九九亚洲精品天堂| 久久国产精品萌白酱免费| 99久久亚洲综合精品成人网| 18禁美女黄网站色大片免费观看| 亚洲人6666成人观看| 麻豆国产人免费人成免费视频 | 亚洲精品成人在线| 国产精品免费看久久久香蕉| 亚洲av片劲爆在线观看| 亚洲精品国产日韩无码AV永久免费网 | 免费人成视频在线观看视频| caoporm超免费公开视频| 亚洲av激情无码专区在线播放| 日日麻批免费40分钟日本的| 亚洲a∨无码一区二区| 亚洲日韩aⅴ在线视频| 国产人在线成免费视频| 污网站免费在线观看| 亚洲短视频男人的影院| 成全视频在线观看免费高清动漫视频下载| 国产精品亚洲一区二区三区久久 | 国产精品亚洲高清一区二区| 最近2019中文字幕免费直播 | 在线观看免费视频网站色| 亚洲人6666成人观看| 久久国产成人精品国产成人亚洲| 午夜精品射精入后重之免费观看| 国产综合成人亚洲区| 亚洲91av视频|