如何将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);
}
本文暂时没有评论,来添加一个吧(●'◡'●)