将office文档转换为swf实现在线预览(基于DocViewer)


placeholder image
admin 发布于:2013-05-27 23:05:00
阅读:loading

今天在开源中国上看到了一篇关于DocViewer的介绍,地址如下:http://blog.log4ic.com/docviewer.html,仔细阅读后发现其介绍说用Java语言实现,且跨平台,是Java企业级的文档阅读解决方案,虽然不会搞,但仍然觉得很牛X的样子,在10年的时候就关注过类似的实现,不过不可惜,没那本事,但是相关的原理早已经熟悉了,在往下看之前,还是建议下了解下详细,不急。
        以前实现过类似的功能,不过是转换为html的方式进行浏览,将office文档(有时候可能还需要pdf)上传到服务器上面,使用Jacob组件将此类文件转换为html文档,进行在线预览,Jacob是什么,就不细说了,微软出的一个将office转换为html的实现,效果与直接打开office文档另存为html的效果一样,假设是一个word文档,里面有一些相关的目录链接,转换后的html同样存在此链接(内链接实现的),图片什么的,没有影响,甚至转换ppt的时候,还能照样上一页,下一页,全屏等等,不扯远了。
        下载DocViewer库,上面的地址页面有个下载源码的地址为:
https://github.com/intelligentcode/DocViewer/downloads,我打开发现页面中提示:“There aren’t any uploads for this repository. ”,我就直接在开源中国中的软件下载地址中,下载的开发库,下载地址如下:https://github.com/intelligentcode/DocViewer/archive/master.zip ,下载文件大小为17M。个人建议下载完成之后,解压文件夹,先熟悉下文件夹中各个文件的结构,然后再开始实现。
我的实现步骤如下:事实证明,如此是可行的,分步骤如下:
1、安装相关的依赖的软件 
      1)、安装open office
        此软件是apache出的办公软件,据说可以解决一切办公所需,不管了,到apache官网上面找吧,先安装,找不到留言,我共享。切记:为了避免出现问题,最后将软件安装在不含有“中文”、“空格”、“特殊字符”的路径中,比如我的安装路径为:C:\OpenOfficeorg3
        2) 、配置下open office的jre环境(不确定为必须步骤,不管你配置不配,反正我配置了
                在线阅读的原理之一是使用此软件将office转换为pdf,那么在熟悉下这款软件时发现有Java的一些配置,比如jre环境,不管这一步是不是必须吧,先给他配置上,截图如下:

image.png

3)、安装swftools
         安装此软件的意义是调用该软件的相关命令将转换为pdf的文件再转换为swf,安装此软件需要注意下,同样遵循安装open office软件的约定。 比如我的安装路径为:C:\swftools,由于是使用程序调用此软件的相关命令,所以要解决的问题为:“如何能调用此软件的相关命令?”比如JDK来说,有两种办法,第一种是全路径引用,如c:\Program Files\java\jdk1.6\bin\java -version,另外一种是配置一下环境变量,直接调用java命令。根据我上面的swftools路径,我的环境变量为:SWFTOOLS_HOME=C:\swftools,在path=***后面添加;%SWFTOOLS_HOME%; 然后手动输入个pdf2swf试试,看看是报windows不能识别命令呢,还是什么。

2、构建WebProject
        1)、新建一个webproject取工程名称为:“docviewer”(后来才发现它代码里面取这个名字如意将它的其他目录的名字搞混),将下载的开发库解压后的DocViewer-master\docviewer目录中的文件拷贝至新的project中相应的目录,比如src拷贝至其src,其他的拷贝值WebRoot下,拷贝完成之后发现有一大堆错误,此时将相关的文件的属性修改为utf-8的编码格式,再将DocViewer-master\docviewerapi的src目录中的文件添加值新的project中,肯定还有一大堆报错的,此时将DocViewer-master\lib下的文件拷贝值WEB-INF/lib下面,再根据自己本地的开发环境不同,是否需要删除什么类库呀等等,能够编译不报错则为正常。需要注意下:DocViewer-master\etc\xpdf-chinese-simplified这个目录的文件夹,好像是pdf转换时所需要的中文支持路径,此时先拷贝至F:\home\icode\Workspace\personal\docviewer\etc\xpdf-chinese-simplified,这个主要是根据新建的工程路径\src\conf\docviewer.properties第34行的配置代码相一致。我的tomcat放在d盘下的devp-tool里面,所以配置文件中配置的/home/icode/Workspace/personal/docviewer/etc/xpdf-chinese-simplified,这里的/表示根路径,即磁盘下的目录,/home也就是f:\home下面(这里猜一下,可能是作者主要在linux系统下跑程序吧,都是/home什么什么的开头)。
          2)、 建议下发布程序,启动服务试试吧,经过下午的测试修改发现一些问题,不知道是作者上传的程序有问题,还是怎么地,反正我前后修改了老多地方的代码,前后台基本都修改过,还有就是后台代码存在大量的io流未关闭的情况,真正使用时还得自己优化优化(原作者看见后还望包涵下,本着精益求精的态度)。还有个问题是在修改过程中发现的,如果在启动tomcat服务时,控制台有报异常的情况下,建议先放着吧,因为在运行过程中必定是要报错的,到时再运行的过程中一步一步的debug中解决它。
          3)、下载的程序是找不到代码中使用的数据库连接池和数据库脚本的,这里我特地将数据库脚本(和我修改过的源码在一个地方)和数据库连接Connection的获取奉上(在AbstractJdbcSupport.getConnection函数中),数据库我暂时就使用MySql了。
           4)、如果在运行时发现还有什么其他的bug,就得再修改了。
           5)、 建议最好将我修改的版本和下载下来的原始版本使用比较神器“Beyond compare”来对比下,看看到底我修改了哪些问题。
3、效果预览和代码下载 
            1)、上传word转换为swf效果运行截图如下:

word转换.gif

            2)、上传excel转换为swf效果运行截图如下:

excel转换.gif

            3)、相关下载(包含MyEclipse运行工程、tomcat启动成功日志、mysql表结构、项目的.classpath文件内容)。

        source.zip

 点赞


 发表评论

当前回复:作者

 评论列表


留言区