如何將Word解析到富文字編輯器?

如何將Word解析到富文字編輯器?

困擾:

前一段時間自己搭建了一個部落格,但是有一個問題一直沒有好的解決方案。

自己之前寫的文章都是Word,

怎麼把Word匯入到自己的部落格呢

?或者說

如何將Word解析成HTML

借鑑:

因為本身自己在今日頭條發表文章,頭條後臺發表文章有一個功能,就是可以將Word文件匯入,然後後臺自動解析到富文字編輯器中,這個功能就完美的實現了我的需求。但是,

如何實現這種功能

呢?

目標:

將Word解析成HTML。

思路:

1先把Word上傳到伺服器。

2利用POI把Word解析成HTML。

3將HTML片段放到富文字框裡顯示。

問題:

關於Word中圖片的處理。

方案1:

在Word解析HTML時將Word圖片轉換成

base64

插入HTML。

優點:

省事。

缺點:

大量圖片會導致HTML體積過大。

方案2:

在Word解析HTML時將Word圖片儲存下來,HTML的img放入

圖片連結

即可。

關於這個

圖片連結:

1上傳到圖片服務中返回一個圖片地址。

2儲存在自己服務中,自定義一個圖片地址。

補充:

最後將解析好的HTML插入到富文字即可。

以上大體思路都捋清楚。

工具類程式碼過多,貼出部分demo,參考原始碼私信或留言。

XWPFDocument document = null;

try {

// 存放圖片的臨時資料夾

String filePath = “D://tmpImage//”;

File imageFile = new File(filePath);

// in Word流

document = new XWPFDocument(in);

// Word圖片輸出到D://tmpImage//

XHTMLOptions options = XHTMLOptions。create()。URIResolver(new FileURIResolver(imageFile));

options。setIgnoreStylesIfUnused(false);

options。setFragment(true);

// 存放圖片的資料夾

options。setExtractor(new FileImageExtractor(new File(filePath)));

// base64實現方式

/*options。setImageManager(new Base64EmbedImgManager());*/

// 重寫URIResolver,目的將HTML img的路徑修改為自定義路徑

options。URIResolver((uri)->{

/*uri表示圖片路徑:word/media/image1。png*/

// 獲取圖片

File imgFile = new File(“D://tmpImage//”+uri);

/*修改img name*/

String imgName = UUIDUtil。getUUID();

// 檔案重新命名 放到

String hz = “。” + “html”;

imgFile。renameTo(new File(“D://image/word/media/” + imgName + hz));

// 返回圖片url,即HTML img src

return “localhost:8080/upload/image/word/media/” + imgName + hz;

});

ByteArrayOutputStream out = new ByteArrayOutputStream();

XHTMLConverter。getInstance()。convert(document, out, options);

return new ByteArrayInputStream(out。toByteArray());

} catch (IOException e) {

log。error(e。getMessage(), e);

}