• 把office文档转换为html过程中的一些坑


    把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

  • 相关阅读:
    从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
    EF增删改查操作
    将String转化成Stream,将Stream转换成String, C# Stream 和 byte[] 之间的转换(文件流的应用)
    解决远程主机关闭了连接错误(正在中止线程)
    手动爆库详细流程以及语句解析
    asp.net 中将汉字转换成拼音
    jdk1.6下使用sardine和jackrabbit-webdav的问题
    模式匹配-BF算法
    git项目创建
    main thread starting…
  • 原文地址:https://www.cnblogs.com/lxg0/p/5683726.html
Copyright © 2020-2023  润新知