之前和我们项目的团队一起酝酿了一个项目,公司的业务文档技术文档比较多,但都比较分散,虽然通过FTP或其他方式聚合起来了,但感觉还是不够方便。

另外公司每次都来新员工,新员工都需要一些培训,比较耗时,比较好的方法是把以前的配置录制视频然后线下先给新员工自己看,但时间久了,资料或视频总是找不到或不是最新等等。

于是我们团队想了一个项目,把已有的资料和视频从线下放到线上,就是能通过一个网站在线看office资料和视频。并且还能对资料评价和点赞等,根据点赞或想学等数据再决定是否对新员工或老员工来一次组织交流。

最开始的项目是参考百度文库,把Office资料转换为flash,视频资料直接存放,然后通过网站在线观看,用了flashpager这个软件,大体代码如下:

			String converter = pt.getFlashPaperUrl() + "/FlashPrinter.exe -o " + savePath + swfName + ".swf  " + documentName;
Process p = pro.exec(converter);

  通过调用Process执行FlashPrinter.exe,然后传递指令和要转换的文件即可转换。

但公司去windows化和去microsoftoffice。这个exe只能运行在windows下,于是重新换了一个方法,在linux下自动把office文档转换为Html。

由于不能用微软的office,于是选用了openoffice,我本地下载的openoffice4.0.1,安装后先启动监听:

soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

JAVA代码就可以连接8100端口让openoffice帮我们把office文档转换为Html。

我采用jodconverter-2.2.1.jar包,代码大体如下:

                OpenOfficeConnection con = new SocketOpenOfficeConnection("127.0.0.1", 8100);
con.connect();
// 创建转换器
DocumentConverter converter = new OpenOfficeDocumentConverter(con);
// 转换文档问html
converter.convert(docFile, htmlFile);
// 关闭openoffice连接
con.disconnect();

  这样就把office文档转换为html文件:htmlFile了。

但ppt默认是转换为一个html文件,每一页ppt会生成一个图片,并且html文件是上一页下一页的形式每次只能看到一页ppt。我们希望把这个html直接展现所有ppt页的图片。于是稍微改造了下,把ppt转换为html后的文件夹下所有图片做轮训,然后拼接一个html文件:

<br><center><img src=" + tempDate + "/" + imgName+ " alt=\"\"></center>

 开发完成后,发现非常完美。

但后面还是遇到了两个坑,分析了很久才发现。

1、部分ppt转换Html始终是乱码。

2、部分word文档转换为html始终是空白。

上面两个问题折腾了比较久,有问题的office始终有问题,没有问题的office一定能转换成功,分析了很久才发现问题。

最后经过一页一页ppt,一个一个文字删除和转换才发现。

第一个问题ppt里如果有备注通过openoffice转换为html就会是乱码,并且内容很少。

第二个问题是word文档里部分文字复制到openoffice的文档里,可能有文字字体不兼容导致。就是比如wps打开这个word,看到都是宋体,但把文字复制到openoffice里,发现有几个字不是宋体了。

解决方法暂时是:

第一个问题把所有ppt的备注人工删除了,就能转换成功了。

第二个问题简单解决方法是把所有文字的字体都再重新修改成一样的字体,比如修改成宋体。

希望能给其他有类试想法或遇到相同问题的带来帮助,转载请注明来自:http://lawson.cnblogs.com

把office文档转换为html过程中的一些坑的更多相关文章

  1. OFFICE 文档转换为html在线预览

    OFFICE 文档在线预览方案很多: 服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览,比如flexpaper Office文档直接转换为SWF,通过网页加载Flash预览 微软的 ...

  2. 转:C#实现office文档转换为PDF或xps的一些方法

    代码支持任意office格式 需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS 下载地址 [url]http://www.microsoft ...

  3. 在禅道中实现WORD等OFFICE文档转换为PDF进行在线浏览

    条件: 安装好禅道的服务器 能直接浏览PDF的浏览器(或通过 安装插件实现 ) 文档转换服务程序(建议部署在另一台服务器上)     实现 原理: 修改禅道的文件预览功能(OFFICE文档其使用的是下 ...

  4. C#实现office文档转换为PDF或xps的一些方法( 转)

    源博客http://blog.csdn.net/kable999/article/details/4786654 代码支持任意office格式 需要安装office 2007 还有一个office20 ...

  5. C#实现office文档转换为PDF格式

    1.安装组件OfficeSaveAsPDFandXPS 需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS 下载地址   OfficeSave ...

  6. java使用jacob将office文档转换为PDF格式

    jacob 包下载地址: http://sourceforge.net/projects/jacob-project/ 下载后,将jacob 与 jacob-1.19-x64.dll放到安装jdk目录 ...

  7. 基于MVC4+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览

    在博客园很多文章里面,曾经有一些介绍Office文档预览查看操作的,有些通过转为PDF进行查看,有些通过把它转换为Flash进行查看,但是过程都是曲线救国,真正能够简洁方便的实现Office文档的预览 ...

  8. java将office文档pdf文档转换成swf文件在线预览

    第一步,安装openoffice.org openoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行. 主要模块有writer(文 ...

  9. Java实现web在线预览office文档与pdf文档实例

    https://yq.aliyun.com/ziliao/1768?spm=5176.8246799.blogcont.24.1PxYoX 摘要: 本文讲的是Java实现web在线预览office文档 ...

随机推荐

  1. 机器学习——支持向量机(SVM)之拉格朗日乘子法,KKT条件以及简化版SMO算法分析

    SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM ...

  2. 抓取百万知乎用户信息之HttpHelper的迭代之路

    什么是Httphelper? httpelpers是一个封装好拿来获取网络上资源的工具类.因为是用http协议,故取名httphelper. httphelper出现的背景 使用WebClient可以 ...

  3. 基于Spring AOP的JDK动态代理和CGLIB代理

    一.AOP的概念  在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的 ...

  4. centos7 打开mysql 3306端口并 设置外部访问

    mysql安装后默认是localhost访问,如果需要外部访问可以设置一个新的账号把host改为%,意味着所有ip均可以访问 grant all privileges on *.* to 'outUs ...

  5. Python中两种处理错误方法的比较

    我所说的处理错误的方法,其实是try:,except和raise这两种. 首先抛出一个实例, dictt={'a':1,'b':2,'c':3} try: if dictt['d']>1: #字 ...

  6. JAVA输入输出流

    概述: 各种流类型(类和抽象类)都位于位于java.io包中,各种流都分别继承一下四种抽象流中的一种: 类型 字节流 字符流 输入流 InputStream Reader 输出流 OutputStre ...

  7. Latex使用整理

    \section{software academy}(标题) \subsection{software enginner} (小标题) \subsection{computer science} \s ...

  8. BZOJ 2086: [Poi2010]Blocks

    Description 每次可以将大于 \(k\) 的一个数 \(-1\), 在左边或右边的数 \(+1\) ,问最大能得到多长的序列每个数都大于等于 \(k\) . Sol 单调栈. 这道题好神啊q ...

  9. jemalloc在linux上从安装到使用

    jemalloc在linux上从安装到使用 上次在引导大家安装Redis时提到可能会报错:  发现了redis有用到jemalloc. 首先,jemalloc是干什么的? 我们看看作者自己的介绍: j ...

  10. 基于webapi的移动互联架构

    又到了一年最后一次上班了,写下这篇日志作为本年总结. 首先总体介绍一下项目背景,今年公司开发了一款app,本人一个人负责app的接口服务.微信开放平台搭建以及系统后台,上线半年,如今活跃用户数3W+. ...