相信有些小伙伴会遇到这样的场景,那就是想要在前端网页上面预览word文件,但是直接预览word文件相对来说还是体验不是很好,再加上如果还想直接在文件上面做一些编辑改变的话,一般前端的富文本编辑器编辑的都是Html文件。所以这个时候我们可以考虑将word转成Html,之后预览和编辑都变得非常简单。之后还需要将文件转成pdf之类的文件也非常方便。
话不多说,下面给大家分享个非常简单好用的方案,并且下面会给出个实际实现的案例。
我们借助的是poi工具,它的功能非常强大,贴出他的github地址:https://github.com/apache/poi,如果想获取更多信息可以去看看。
我这边用到的相关工具引入:

        <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.poi.xwpf.converter.xhtml</artifactId><version>2.0.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.3</version></dependency>

现在我们遇到的word文件有两种,一种是以docx文件结尾的,另一种是doc文件结尾的。两种文件在内部编码是有一些差异的,doc是03版本或更早,docx只有07版之后才有的格式。

当然它们转Html的方法也稍有不同,下面分别给出demo,两个方案的测试数据也有不同,各位根据自己的需要调整就行。

public static String docToHtml() throws Exception {HWPFDocument hwpfDocument = new HWPFDocument(new FileInputStream("E:\\****.doc"));Document newDocument = XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument();WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(newDocument);wordToHtmlConverter.processDocument(hwpfDocument);Transformer transformer = TransformerFactory.newInstance().newTransformer();//指定Transformer在输出结果树时是否可以添加额外的空格transformer.setOutputProperty(OutputKeys.INDENT, "yes");//指定输出编码transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");transformer.setOutputProperty(OutputKeys.METHOD, "html");//这里是希望将转换后的流最终输出到字符串进行返回, 如果你希望直接输出文件, 你可以创建一个文件流放进下面的参数StringWriter stringWriter = new StringWriter();transformer.transform(new DOMSource(wordToHtmlConverter.getDocument()), new StreamResult(stringWriter));String html = stringWriter.toString();return html;}
private static String docxToHtml(byte[] fileType) throws IOException {XWPFDocument document = new XWPFDocument(new ByteArrayInputStream(fileType));StringWriter stringWriter = new StringWriter();XHTMLConverter xhtmlConverter = (XHTMLConverter) XHTMLConverter.getInstance();XHTMLOptions options = XHTMLOptions.getDefault();xhtmlConverter.convert(document, stringWriter,options);String html = new String (stringWriter.toString().getBytes("utf-8"),"utf-8");return html;}

转换成html就可以快乐地使用啦~

word转Html的实现方案相关推荐

  1. 使用word模板生成word文档的各类方案

    使用word模板生成word文档的各类方案 生成word的各种方案 word另存xml进行后续处理 2003版本word(.doc)的xml处理并生成word 2007版本word(.docx)的xm ...

  2. java读取word表格中的数据_JAVA获取word表格中数据的方案

    上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...

  3. Word动态输出多表格方案(以工资条为例)

    1.功能介绍 PageOffice能实现在Word文档中动态循环输出多个相同格式的表格并在表格的单元格中动态填充数据. 在Word文档中使用表格时,有时可能会需要生成多个具有相同格式的表格,例如某大公 ...

  4. ckeditor粘贴word文档图片的方案

    当前功能基于PHP,其它语言流程大致相同 1.新增上传word json配置 在ueditor\php\config.json中新增如下配置: /* 上传word配置 */ "wordAct ...

  5. word文件丢失怎么办?恢复Word文档的3个方案

    电脑里面有很多大大小小的文件数据,有时对我们可有可无,有时是很重要的.在清理电脑过程中,要是不小心误删了重要的文件,word文件丢失如何恢复?只需要下面的3个方案,就可以轻松找回Word文档! 方案一 ...

  6. 简单快速导出word文档

    最近,我写公司项目word导出功能,应该只有2小时的工作量,却被硬生生的拉长2天,项目上线到业务正常运行也被拉长到2个星期. 为什么如此浪费时间呢? 1)公司的项目比较老,采用硬编码模式,意味着wor ...

  7. PHPWord利用模板替换字符串生成精确的word文档

    用phpword处理docx模板时候始终发生神奇的BUG,就是复制原版例子里的${Value1}进自己的模板然后替换是没问题的,但是只要一改动这个变量文字,PHP做相应替换就失效了. 用了下残废百度无 ...

  8. java 富文本 word_Java导出富文本到word

    源码地址: 背景 最近用java开发一个中车项目管理系统,里面有一个维修单word导出功能. 可用方案 在网上查找资料,总结出两种比较可行的方案. (1) 制作word模板,导出成mht文件(单页面网 ...

  9. c#取消word修订痕迹_法律人必备的WORD技能,从1.0到2.0丨星瀚技术派

    - 2020年第  004  篇文章 - 如果说擅长PPT是法律人技能库的"锦上添花",那么,把WORD运用得炉火纯青,则是闯荡江湖的基础技能,在时间就是金钱的行业中,熟练的WOR ...

  10. Java导出数据到Word模板中

    Java导出数据到Word模板. 前言 网上的方案 需求介绍 模板 简介 使用体验 poi-tl Freemarker 操作步骤 总结 前言 相信很多人都会遇到Java导出的业务,Java导出主要有导 ...

最新文章

  1. 差点败北!B站疯传3W次,堪称最强Java面试题,顺利拿下阿里P7的35K*16 薪 Offer...
  2. Xilinx Altera FPGA中的逻辑资源(Slices VS LE)比较
  3. coreldraw 复制填充渐变色
  4. 2018ACM-ICPC Asia Nanjing Regional Contest
  5. (持续更新)webstorm快捷键及术语翻译
  6. 初创公司股本结构_我如何向初创公司的开发团队添加一些结构-以及从过程中学到的东西
  7. 关于JavaScript的数组随机排序
  8. mysql外连接基准表_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)...
  9. 漏洞防御方案_越权漏洞原理及防御方案
  10. React Native : AsyncStorage 存储
  11. dcdc模块降额设计_大功率IGBT模块及驱动技术
  12. 【程序员节特别推送】搭建一个与技术无关的博客网站(Java后台)
  13. 软件架构之“道”和“术”哲学思考
  14. csv excel 对比
  15. 索尼电视android屡次停止,索尼电视撤回安卓8.0固件包:存在无法连接WiFi问题
  16. fastdb缩小初始生成文件
  17. Photoshop 2020免注册登录版,自用下载安装教程
  18. 华为云服务器销售话术技巧,云服务器销售话术
  19. Linux下文件备份和同步的工具软件
  20. 内存、主存、外存、主存储器、外存储器等之间的区别

热门文章

  1. linux开发板通过网线连接电脑
  2. EDEM快速填充的方法
  3. AlphaZero问世:8小时完爆围棋、国际象棋、日本将棋(转)
  4. 计算机研究生开题报告ppt模板,硕士开题报告ppt模板
  5. windbg内核诊断方式--转载
  6. RSA加密算法中的数学原理
  7. css设置div垂直居中
  8. android wifi热点 信道,wifi 热点配置最优信道(示例代码)
  9. vmd python 命令_【MMD】用python解析VMD格式读取
  10. 让css的字体加粗后不影响宽度变化与content和attr()问题