最近一直在研究关于Word、Excel、Txt文档在线转换Swf文件技术,目的是为了在线阅读这些文档更加方便,因为所有的浏览器都支持SWF文件直接播放,就省去很多麻烦。
言归正传,Word、Excel、Txt在线转换为Swf格式文件已经不是什么新新技术,突出代表为豆丁网、百度文库。在互联网上搜索相关技术文章也不少,搜到最多的就是Adobe Macromedia FlashPaper,还有就是Print2Flash,在后者官方网站介绍中有两者的功能对比,说是Print2Flash要比Adobe Macromedia FlashPaper强大,具体未测试,我只针对FlashPaper进行了实际测试和研究。
测试环境:Win2003+IIS6+Office2007+ASP+Adobe Macromedia FlashPaper 2.2。
备注说明:建议使用Office2007或以上,原因是Office2003不稳定,并且无法转换EXCEL和DOCX文件(互联网上搜到资料这么说的,我之前也没成功,不知道是权限问题还是版本问题),FlashPaper 2.2用的是绿色破解版(你懂的),WEB语言无所谓,本人对PHP、ASP.NET不熟悉,所以不浪费时间。
一、服务器环境调试步骤:
1、先安装FlashPaper,安装好后,在“打印机和传真”中会多一个Macromedia FlashPaper。
2、新建一个Windows 用户账户,加入Administrators组,并将该用户设置为应用站点的IIS匿名访问账户。
3、在IIS中为应用站点建立一个独立的应用程序池,并将该池属性中“标识”下“预定义账户”设置成“本地系统”。
4、打开“系统管理”-“组件服务”-“计算机”-“我的电脑”-“DCOM配置”,将“Microsoft Excel 应用程序”属性的“常规”中“身份验证级别”设置为“无”;然后将“安全”中“启动和激活权限”、“访问权限”、“配置权限”的“自定义”中加入Everyone,被赋予所有权限。
5、“Microsoft Word 文档”属性同上设置。
6、应用站点中上传文件和存放转换后文件目录要给足写入权限。
二、ASP调用FlashPaper代码部分:
strCmd = "e:\FlashPaper2.2\FlashPrinter.exe e:\wwwrooot\a\20110330142507303.xls -o e:\wwwroot\b\20110330142507303.swf " '执行命令行
Dim objShell
Dim intSecceed
Set objShell = Server.CreateObject("WScript.Shell")
Response.Write(strCmd & "<hr>")
intSecceed = objShell.Run(strCmd,1,false)
If intSecceed = 0 Then
Response.Write("命令成功执行,返回码:" & intSecceed)
Else
Response.Write("命令执行失败,返回码:" & intSecceed)
End If
set objShell = nothing
写在最后:只是简单实现实现Word、Excel、Txt文档在线转换Swf技术,但还留下一些问题待解决。
1、线程问题,ASP代码对线程控制的控制的不是很好,一旦出现EXCEL假死不能关闭进程,有可能会导致后面的转换无法进行。
2、并发问题,一旦大批量同时转换,那么势必会照成服务器端CPU与内存资源的占用,最好的办法是用队列来解决,FlashPaper虚拟打印机在打印机属性里设置后台打印设置,好像不好使。
3、转换中途FlashPaper或Office组件出错,如何结束错误并反回WEB调用信息。
以上问题估计ASP是很难实现了,如果有高手请多多赐教。
这里将提供FlashPaper模版DefaultViewer2.swf去LOGO下载: