前端页面嵌入word文档_Java 处理word文档后在前端展示
这个是个比较传统的解决思路,搜一搜其实发现很多人都这么干,这批人难道也是对上述方法(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文档后在前端展示相关推荐
- layui前端页面table表格怎么格式化转换时间_个人经历:我的前端学习历程
很难想象一个半年前还在做后台开发,对前端知之甚少的我,现在也可以从事前端开发了.这半年的学习过程将会是我人生一笔宝贵的财富,这让我想到一句话"在成长的道路上,我们不要给自己设定界限,只要拥有 ...
- 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 ...
- java语言 回文判断_java判断回文字符串的几种方法
java判断回文字符串几种简单的实现: 1.将字符串倒置后逐一比较,实现如下: public class HuiWenTest { /** * @SERLIN */ public static voi ...
- 前端页面嵌入word文档_word文档怎样加页面
word文档怎么加页 一.添加页在WORD中,使用键盘组合键:Ctrl + 回车键可以添加页. 方法2:单击页面布局---->分隔符---->分页符,如图所示. word文档怎么在两页之中 ...
- java word添加图片_Java 替换word文档文字并指定位置插入图片
先说下 需要的依赖包 org.apache.poi poi-excelant 3.12 org.apache.poi poi-scratchpad 3.12 org.apache.poi poi-oo ...
- java word 颜色设置_Java 给Word文档添加背景颜色
前言 当我们制作好Word文档后,想要让枯燥乏味的文本显得有活力,或是想高亮显示文档中指定的段落或文字,此时我们可以通过为整个文档或某特定文字/段落添加背景色的形式来实现.本文将使用Free Spir ...
- java读取带格式word文档_Java读取word文档解决方案
java读取word文档时,虽然网上介绍了很多插件poi.java2Word.jacob.itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用):java ...
- java 预览word文档_Java实现office文档与pdf文档的在线预览功能
最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...
- java word替换图片_Java 替换word文档文字并指定位置插入图片
先说下 需要的依赖包 org.apache.poi poi-excelant 3.12 org.apache.poi poi-scratchpad 3.12 org.apache.poi poi-oo ...
最新文章
- 大有可为的“正则表达式”(二)
- java oralce merge_mybatis 使用oracle merge into 语句踩坑实录(示例代码)
- 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
- STL之红黑树容器:set,hash_set,multiset,hash_map,multimap
- Django之ORM操作
- epic登陆按钮一直在转_双剑合璧!GOG GALAXY 2.0官方支持Epic商店集成
- 【Android游戏开发之一】设置全屏以及绘画简单的图形
- java的子类调用构造器的顺序_深入剖析Java继承中的初始化与构造器调用关系
- STM8S003F3 uart的使用
- (二十六)树莓派3B+ 获取HMC5883L的磁场数据
- Android自动打开省电模式,常规省电模式 | Android 开源项目 | Android Open Source Project...
- Redis面试宝典12道法
- Cent OS (一)Cents OS的基本安装
- flutter dart 中dynamic var object的区别
- CSS控制print打印样式
- 怎么合并或注销重复LinkedIn领英帐号?
- java之get/set方法的作用:灵活、安全
- 从视频中提取音频Python
- node.js+uni计算机毕设项目基于微信小程序在线抽签系统(程序+小程序+LW)
- LeetCode-929. 独特的电子邮件地址