把office文档转换为html过程中的一些坑
之前和我们项目的团队一起酝酿了一个项目,公司的业务文档技术文档比较多,但都比较分散,虽然通过FTP或其他方式聚合起来了,但感觉还是不够方便。
另外公司每次都来新员工,新员工都需要一些培训,比较耗时,比较好的方法是把以前的配置录制视频然后线下先给新员工自己看,但时间久了,资料或视频总是找不到或不是最新等等。
于是我们团队想了一个项目,把已有的资料和视频从线下放到线上,就是能通过一个网站在线看office资料和视频。并且还能对资料评价和点赞等,根据点赞或想学等数据再决定是否对新员工或老员工来一次组织交流。
最开始的项目是参考百度文库,把Office资料转换为flash,视频资料直接存放,然后通过网站在线观看,用了flashpager这个软件,大体代码如下:
1 2 | 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包,代码大体如下:
1 2 3 4 5 6 7 8 | 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文件:
1 | <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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述