这个是个比较传统的解决思路,搜一搜其实发现很多人都这么干,这批人难道也是对上述方法(jsp直接显示)失望了后找的这种模式?呵呵

比较常用的开源免费的有且只有几种,选择其中几种我尝试了一下。

首先想到的是POI,但处理 Word 没有想象的中的那样优秀,出来的基本一团糟,没有任何格式性可谈,而且需要一个字符一个字符的处理特别费力,结果不理想代码就不贴了,曾使用它来处理过 Excel 觉得还很优秀!

然后就另找了一个叫 OpenOffice,经过尝试发现经过它转换出来的文档,虽然缺失格式,但也不是不能接受,自己再另行加处理也许能成。将Word转Html的原理是这样的:

1、客户上传Word文档到服务器

2、服务器调用OpenOffice程序打开上传的Word文档

3、OpenOffice将Word文档另存为Html格式

基于这个基础上的实现需要下载 openOffice 。

3、安装 OpenOffice,成功后在安装目录下启动监听端口:

soffice -headless -accept="socket,port=8100;urp;"

可以通过 netstat –an|findstr “8100” 查看端口是否监听;如图

4、打开Eclipse新建项目,导入Jodconverter/lib 下面的 jar 。具体的需要哪些自己可以尝试。我比较懒就都添加了。

下面是代码:

importjava.io.File;importjava.net.ConnectException;importcom.artofsolving.jodconverter.DocumentConverter;importcom.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;importcom.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;importcom.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;public classOfficeConverter {public static voidmain(String[] args) {

File inputFile= new File("C:/test/yy.doc");

File outputFile= new File("C:/test/yy.html");

OpenOfficeConnection con= new SocketOpenOfficeConnection(8100);try{

con.connect();

}catch(ConnectException e) {

System.err.println("文件转换出错,请检查OpenOffice服务是否启动。");

e.printStackTrace();

}

DocumentConverter converter= newOpenOfficeDocumentConverter(con);

converter.convert(inputFile, outputFile);

con.disconnect();

}

}

总结:使用OpenOffice作为转换引擎把word文档转换成html,比起使用微软的com组件有跨平台的优势,而且比Apache poi(POI貌似只能获取word中的文本内容,图片和表格,图片和表格的定位很是个问题,获取样式要一个字符一个字符的分析麻烦且效率低下)方便且简单,但是个人觉得这个结果其实并不理想,排版仍然缺失很严重。

普通情况下的排版差别见下图:

通过程序读取解析后的文档格式如下图,经过对比貌似比 word 自身的另存为还好看点,相信经过不断优化以后应该能完美支持解析。但是细心点还是会看见单元格样式变了,排版变了,如果要求不是太高,这个也能满足需求了。

不过如果只需要保存相关的文字的话,上面转化的html内容冗余比较多,可以用 java 正则表达式来处理多余字符串,详见下面的代码:

protected staticString clearFormat(String htmlStr, String docImgPath) {//获取body内容的正则

String bodyReg = "

";

Pattern bodyPattern=Pattern.compile(bodyReg);

Matcher bodyMatcher=bodyPattern.matcher(htmlStr);if(bodyMatcher.find()) {//获取BODY内容,并转化BODY标签为DIV

htmlStr = bodyMatcher.group().replaceFirst("

", "

");

前端页面嵌入word文档_Java 处理word文档后在前端展示相关推荐

  1. layui前端页面table表格怎么格式化转换时间_个人经历:我的前端学习历程

    很难想象一个半年前还在做后台开发,对前端知之甚少的我,现在也可以从事前端开发了.这半年的学习过程将会是我人生一笔宝贵的财富,这让我想到一句话"在成长的道路上,我们不要给自己设定界限,只要拥有 ...

  2. java 读取word 带格式_java读取word带格式_游戏下载_游戏攻略资讯_尽在搜狗爱玩

    Started learning Java and think you're ready to move on to the next level? Find out if you have a go ...

  3. java语言 回文判断_java判断回文字符串的几种方法

    java判断回文字符串几种简单的实现: 1.将字符串倒置后逐一比较,实现如下: public class HuiWenTest { /** * @SERLIN */ public static voi ...

  4. 前端页面嵌入word文档_word文档怎样加页面

    word文档怎么加页 一.添加页在WORD中,使用键盘组合键:Ctrl + 回车键可以添加页. 方法2:单击页面布局---->分隔符---->分页符,如图所示. word文档怎么在两页之中 ...

  5. java word添加图片_Java 替换word文档文字并指定位置插入图片

    先说下 需要的依赖包 org.apache.poi poi-excelant 3.12 org.apache.poi poi-scratchpad 3.12 org.apache.poi poi-oo ...

  6. java word 颜色设置_Java 给Word文档添加背景颜色

    前言 当我们制作好Word文档后,想要让枯燥乏味的文本显得有活力,或是想高亮显示文档中指定的段落或文字,此时我们可以通过为整个文档或某特定文字/段落添加背景色的形式来实现.本文将使用Free Spir ...

  7. java读取带格式word文档_Java读取word文档解决方案

    java读取word文档时,虽然网上介绍了很多插件poi.java2Word.jacob.itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用):java ...

  8. java 预览word文档_Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  9. java word替换图片_Java 替换word文档文字并指定位置插入图片

    先说下 需要的依赖包 org.apache.poi poi-excelant 3.12 org.apache.poi poi-scratchpad 3.12 org.apache.poi poi-oo ...

最新文章

  1. 大有可为的“正则表达式”(二)
  2. java oralce merge_mybatis 使用oracle merge into 语句踩坑实录(示例代码)
  3. 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
  4. STL之红黑树容器:set,hash_set,multiset,hash_map,multimap
  5. Django之ORM操作
  6. epic登陆按钮一直在转_双剑合璧!GOG GALAXY 2.0官方支持Epic商店集成
  7. 【Android游戏开发之一】设置全屏以及绘画简单的图形
  8. java的子类调用构造器的顺序_深入剖析Java继承中的初始化与构造器调用关系
  9. STM8S003F3 uart的使用
  10. (二十六)树莓派3B+ 获取HMC5883L的磁场数据
  11. Android自动打开省电模式,常规省电模式  |  Android 开源项目  |  Android Open Source Project...
  12. Redis面试宝典12道法
  13. Cent OS (一)Cents OS的基本安装
  14. flutter dart 中dynamic var object的区别
  15. CSS控制print打印样式
  16. 怎么合并或注销重复LinkedIn领英帐号?
  17. java之get/set方法的作用:灵活、安全
  18. 从视频中提取音频Python
  19. node.js+uni计算机毕设项目基于微信小程序在线抽签系统(程序+小程序+LW)
  20. LeetCode-929. 独特的电子邮件地址

热门文章

  1. 2022年江西省中职组“网络空间安全”赛项模块B-网页渗透
  2. 微信小程序如何debug调试
  3. 失眠到底影不影响增肌?
  4. 奥运门票官方网站地址
  5. C#中的流程控制语句
  6. 完全解读Prometheus查询
  7. ARP和RARP协议
  8. java工程师职业规划图,已拿意向书!
  9. 随心所欲----食堂点餐系统分析设计
  10. 波尔图大学计算机专业,2018US News葡萄牙大学学科排名