网站首页 > 开源技术 正文
如何将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);
}
猜你喜欢
- 2024-09-28 如何使用富文本(富文本js)
- 2024-09-28 无忧·企业文档富文本辅助编辑以及收藏评论的功能介绍
- 2024-09-28 设置表格列宽——在富文本编辑器中的实现
- 2024-09-28 可变二维码打印软件之富文本工具介绍
- 2024-09-28 在vue中使用富文本编辑器vue-quill-editor
- 2024-09-22 任由文字肆意流淌,更自由的开源 Markdown 编辑器
- 2024-09-22 tinymce 富文本编辑器 常用插件(富文本编辑器app)
- 2024-09-22 VUE前端编程:富文本编辑器wangEditor 5 工具条定制
- 2024-09-22 谈谈浏览器中富文本编辑器的技术演进
- 2024-09-22 CKEditor 4.14:支持复制粘贴 LibreOffice 文档的富文本编辑器
你 发表评论:
欢迎- 03-24黑苹果详细安装教程-基于OpenCore官网指导-UPUPMO
- 03-24From Mate70 to HarmonyOS NEXT: Huawei's pursuit of technological independence
- 03-24彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏
- 03-24AI视频增强神器:Perfectly Clear(ai能给视频提升画质吗)
- 03-24[oeasy]python0032_ 火星文字幕_os_操作系统的作用_time_sleep
- 03-24Mac磁盘清理工具----ClearDisk(mac磁盘清理软件)
- 03-24联想Yoga530 二合一Win10改装win7教程
- 03-24隐私保护化繁为简: MacPaw 以直观的设计将 ClearVPN 扩展到 iPadOS
- 最近发表
-
- 黑苹果详细安装教程-基于OpenCore官网指导-UPUPMO
- From Mate70 to HarmonyOS NEXT: Huawei's pursuit of technological independence
- 彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏
- AI视频增强神器:Perfectly Clear(ai能给视频提升画质吗)
- [oeasy]python0032_ 火星文字幕_os_操作系统的作用_time_sleep
- Mac磁盘清理工具----ClearDisk(mac磁盘清理软件)
- 联想Yoga530 二合一Win10改装win7教程
- 隐私保护化繁为简: MacPaw 以直观的设计将 ClearVPN 扩展到 iPadOS
- 图虫建筑摄影:无题(海棠摄影建筑摄影)
- 筑AD年度:2015年最美宗教建筑合集
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)