本文主要目录:
最近研究了一下在线文档浏览器,感觉这个东西很值得封装成为一个平台级的组件,为什么这么说呢?因为在我们的传统的应用系统或网站中,我们的文档浏览功能对客户端有很大的限制,例如客户要想在他客户端上浏览word格式文档就必须安装Office套件,浏览pdf时必须装pdf阅读器等,这样用户的体验可想而知,为了提高用户的体验,增强各个应用产品的质量,做成一个平台级组件是非常有必要的。
文档在线浏览器的主要功能包括:文件上传、文件格式转换、文件浏览等功能。
1.1、目标
尽量给客户提供一个免插件浏览的环境,这样COM、silverlight等不流行的插件基本被排除,flash成为首选,目前flash已基本上绑定在浏览器上,它的通用性非常强,用它没错。
文档浏览低延迟,对于大附件可以采用异步的方式,比如切片的形式,把大附件切成一页一页,用户选择第几页就直接显示第几个切片,这样实时性比较有保障。
文件上传格式多样性,支持上传gif、png、jpg、pdf、txt、doc(x)、ppt(x)、xls(x)等,文件输出为swf格式。
1.2、需求矩阵
在了解了文档浏览器的基本功能和我们的应用目标之后,我们怎么去具体进行需求的分析呢,这里用需求矩阵来把需求整理出来,需求=功能+质量+约束,这个公式确实很清晰,我现在基本上都用它做需求分析,见下图,我们从组织、用户、开发3个层面去充分分析了所有需求,这样我们接下来就可以做设计、技术选型、开发等工作了。
1.3、技术选型
文件上传组件:jquery.uploadify;
Office转换pdf:Microsoft.Office.Interop.Excel、Microsoft.Office.Interop.Word等;
pdf\图片转换swf:swftools;
文档浏览组件:FlexPapper;
运行前配置:
1. 安装Swftools.exe(百度搜索下载,0.9版本)
2. 安装Office2010
3. 开启print Spooler服务(一般系统默认开启)
4. 操作系统:windows XP及以上版本。
运行配置:
1.配置检测基本信息,如图所示:
测试结果都为“Yes”,点击“On to step2”
2.配置文档浏览器基本信息如下图:
上传文件保存路径为用户上传文档所保存的地址。
SWF生成路径是源文件转换成SWF文件所存放的路径。
这里根据对需求的充分分析,文档格式的转换既是实现的难点也是程序的核心,转换的设计必须非常的优雅,通用和易维护性是重中之重,这里采用工厂模式方式实现,这样如果有新的文档格式需要转换时,只需要继承文档转换抽象基类即可,抽象基类中的配置信息、默认转换方法可以直接复用,类图详见下图:
通过本次封装我们给各个开发项目提供了统一的文档在线浏览器组件,项目中直接调用接口即可实现,运行效果参见下图,由于FlexPapper是开源的,如果我们如果对组件的外观不满意,可以直接修改FlexPapper的源代码即可实现,所以对需求的变化可以快速反应,精准执行!
支持上传gif、png、jpg、pdf、txt、doc(x)、ppt(x)、xls(x)