仿百度文库

来源:互联网 发布:软件销售分成比例 编辑:程序博客网 时间:2024/03/29 18:24
什么叫仿百度文库方案?
用户上传一个文档,格式有可能是doc、docx、xls、ppt、pdf 等。其他用户在前台查看的却是一个swf格式的flash文档。
flash文档可以起到防止用户下载,以及良好的浏览体验。
具体流程:
 1.调用openoffice.org 的系统服务将office文档转换为pdf
 2.调用swftools将pdf转换为swf

 3.前台使用flexpaper浏览swf文件

我们的web应用需自动将office文档进行以上三项转换,下面说说如何用好上面的三个组件:

以下结论是花了两个多礼拜不断地查资料尝试总结出来的:

关于openoffice:

 >> 服务启动方式:1.命令行方式启动   2.将openoffice的soffice作为系统服务,实行开机启动。

 >> txt文件转换为pdf出现乱码:解决办法:先将txt转换为.odt文件,再转换为pdf,这样就不会有乱码。


关于swftools:

 >> 主要是版本问题:低于版本9的swf无法显示。解决办法:在转换命令行中加上flashversion=9 或者 -T 9


关于flexpaper。这个是个重头戏:

 >> flexpaper添加swf信任问题:这是由于flash播放器不允许直接对本地swf文件进行操作,出于安全考虑。想详细了解可以取问百度,谷歌。

     解决办法:将flexpaper以及swf文件发布到web服务器上,通过http方式访问就不会出现这种情况了


 >> flexpaper加载不了中文文件名的swf:暂未解决。


 >> 控制器action跳转到flexpaper所在jsp页面时,flexpaper报错

    原因是:flexpaper.js有这么一条:src: _jsDirectory+"../FlexPaperViewer.swf" 采用了相对路径,当从action跳至该页面时,                               FlexPaperViewer.swf肯定就找不着了

    解决办法: 改为绝对路径:src: flexpaper/FlexPaperViewer.swf"


 >> swf远程加载问题 : flexpaper无法加载http方式的swf路径

    原因:由于flash的安全问题,flash安全问题是针对远程功能swf对本地swf文件进行操作这一场景,

         若FlexPaperViewer.swf与swf文件在同一个远程域,则不会有安全拦截。

    解除限制有两种办法:
      >> 跨域配置--详见谷歌
      >> 将swf解析器(FlexPaperViewer.swf)和swf放在同一域(IP)上
         同样用http://192.168.1.109:8080这样的路径读取FlexPaperViewer.swf

 var fp = new FlexPaperViewer( 
'http://192.168.11.202:8080/gsdkms/flexpaper/FlexPaperViewer',

                'viewerPlaceHolder', { config : { 
    SwfFile : escape('http://192.168.11.202:8080/fileMgr/swf_path/test/Paper.swf'), //这是IP上配置的虚拟目录下swf文件

      ......

                    ......

                }

    配置虚拟路径

    加载本地swf:
      >> 若本地swf放在tomcat下:可直接通过相对路径访问
      >> 若本地swf不放在tomcat下:配置虚拟目录后用http地址方式访问


 >> flexpaper加载swf文件http路径不支持\,最好将路径中的\替换为/
   
    SwfFile : escape('http://192.168.11.202:8080/fileMgr/upload/GSD-XC/A/01/view.swf') (OK)
    SwfFile : escape('http://192.168.11.202:8080/fileMgr/upload\GSD-XC\A\01\view.swf')  (不OK)



原创粉丝点击