1. 程式人生 > >RTF轉換為HTML格式(java)

RTF轉換為HTML格式(java)

弄了整整三天,終於搞定了,在此和大家分享一下我的收穫,如有更好的解決方法,請指教,謝謝!

想要做一個RTF轉換TXT的程式碼,找了一圈,好不容易找了個折中的方法,先轉HTML,然後提取HTML中的純文字部分,下面把整個方法介紹一下。

一、第三方開發包

先簡單介紹一下RTF格式相關的內容,摘自百度百科:

作為微軟公司的標準檔案,早期外間需要數十美元向微軟付款,才能購買一本薄薄的RTF標準檔案。不過隨著採用RTF格式標準的軟體愈來愈多,RTF格式也愈來愈普遍,微軟公司就把標準檔案公開,放在網上供開發者下載。現時可供下載的各個RTF版本標準檔案如下:
  RTF 1.9.1 specification (March 2008)
  RTF 1.8 specification (April 2004)
  RTF 1.6 specification (May 1999)
  RTF 1.5 specification (April 1997)
  RTF 1.3 and 1.5 specifications
  RTF 1.0 specification (June 1992)
  RTF格式是許多軟體都能夠識別的檔案格式。比如Word、WPS Office、Excel等都可以開啟RTF格式的檔案,這說明這種格式是較為通用的。
  RTF是Rich Text Format的縮寫,意即多文字格式。這是一種類似DOC格式(Word文件)的檔案,有很好的相容性,使用Windows“附件”中的“寫字板”就能開啟並進行編輯。使用“寫字板”開啟一個RTF格式檔案時,將看到檔案的內容;如果要檢視RTF格式檔案的原始碼,只要使用“記事本”將它開啟就行了。這就是說,你完全可以像編輯HTML檔案一樣,使用“記事本”來編輯RTF格式檔案。

忘記怎麼找到WebCAT了,可能找太多、太亂,當時的關鍵詞也沒記住,http://webcat.sourceforge.net/,JavaDoc可以從這裡http://webcat.sourceforge.net/javadocs/訪問。WebCAT是葡萄牙里斯本大學的一個XXX什麼的開發的(WebCAT was developed at the XLDB group of the Department of Informatics of the Faculty of Sciences of the University of Lisbon in Portugal.),其中提供的RTF2HTML可以很方便地把RTF檔案轉換成HTML檔案,而且速度也還可以。不過只是針對文字,不能保留圖片等資源,有些遺憾,但是並不影響轉TXT的目的。

二、RTF轉HTML

new RTF2HTML().convertRTFToHTML(new File(filename)),方法convertRTFToHTML會返回一個轉換成HTML格式的字串。

四:使用該工具會出現中文格式亂碼,解決方法如下:(紅色字型部分)

String bodyText =null;
        DefaultStyledDocument styledDoc 
=new DefaultStyledDocument();    //javax.swing.text.Document的一個例項try {
            InputStream is 
=new
 FileInputStream(new File("data/java.swing.text讀RTF文件測試.rtf"));
            
new RTFEditorKit().read(is, styledDoc, 0);
            bodyText 
=new String(styledDoc.getText(0, styledDoc.getLength()).getBytes("ISO8859_1"));    //提取文字        } catch (IOException e) {
            
thrownew DocumentHandlerException("不能從RTF中摘錄文字!", e);
        } 
catch (BadLocationException e) {
            
thrownew DocumentHandlerException("不能從RTF中摘錄文字!", e);
        }
        System.out.println(bodyText);

RTF-HTML 終於解決了,接下來繼續煙具HTML轉換為RTF,嘿嘿,加油!