WEB格式实现Word、Excel、Txt文档在线转换为Swf(或PDF)
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代码部分:
1: strCmd = "e:\FlashPrinter.exe e:\test.xls -o e:\test.swf " '执行命令行
2: Dim objShell
3: Dim intSecceed
4: Set objShell = Server.CreateObject("WScript.Shell")
5: Response.Write(strCmd & "<hr>")
6: intSecceed = objShell.Run(strCmd,1,false)
7: If intSecceed = 0 Then
8: Response.Write("命令成功执行,返回码:" & intSecceed)
9: Else
10: Response.Write("命令执行失败,返回码:" & intSecceed)
11: End If
12: set objShell = nothing
写在最后:只是简单实现实现Word、Excel、Txt文档在线转换Swf技术,但还留下一些问题待解决。
1、线程问题,ASP代码对线程控制的控制的不是很好,一旦出现EXCEL假死不能关闭进程,有可能会导致后面的转换无法进行。
2、并发问题,一旦大批量同时转换,那么势必会照成服务器端CPU与内存资源的占用,最好的办法是用队列来解决,FlashPaper虚拟打印机在打印机属性里设置后台打印设置,好像不好使。
3、转换中途FlashPaper或Office组件出错,如何结束错误并反回WEB调用信息。
以上问题估计ASP是很难实现了,如果有高手请多多赐教。
这里将提供FlashPaper模版DefaultViewer2.swf去LOGO下载:
下载地址:DefaultViewer2.swf去LOGO文件
本文来自 传送门
欢迎大佬支持本博客的发展 -- Donate --
本文链接:WEB格式实现Word、Excel、Txt文档在线转换为Swf(或PDF)
转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:三十岁,谢谢!^^
分享到: | |
没有评论