如何將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);
}