首页 新闻 搜索 专区 学院

asp.net仿百度文库遇到的excel转swf格式的问题

0
[已解决问题] 解决于 2012-04-28 09:43


在做一个仿百度文库的项目,上传文档后转为相关的SWF,基本思路是上传文档后调用CMD命令使用FlashPaper2.2把上传的文档转为相对应的SWF预览文件,命令如下:

FlashPrinter.exe 源文件路径 -o 目标SWF文件路径

相关.NET代码如下:

 string file_storage = "d:\aaa.docx";
string file_bowze = Server.MapPath("~/swf/aaa.swf"); //转换为SWF格式后存放的路径

string flash_file = Server.MapPath("~/FlashPaper2.2/FlashPrinter.exe");

string input = string.Format("{0} {1} -o {2}", flash_file, file_storage, file_bowze); //类似于在DOS界面要输入的内容


Process pro = new Process();

pro.StartInfo.FileName = "cmd"; //调用CMD线程
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.RedirectStandardInput = true; //注册输入指向
pro.StartInfo.RedirectStandardOutput = true; //注册输出指向
pro.StartInfo.CreateNoWindow = true; //不建新窗口,这个属性可以根据需要自己设定
pro.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //隐藏窗口

pro.Start();

pro.StandardInput.WriteLine(input); //将内容写到DOS ---个人是这么理解的
pro.StandardInput.WriteLine("exit");
pro.WaitForExit(6000);
string output = pro.StandardOutput.ReadToEnd(); //这句一定要加,输出转换好的SWF格式文件到指定位置 ,我一开始没加怎么都得不到文件;
pro.Close(); //关掉线程

以上转换代码在本机测试jpg,txt,pdf,doc,docx,ppt,pptx,xls,xlsx文档全部转换成功,把项目上传到服务器上后,发现除xls,xlsx文档之外其他的文档也全都能成功转换成swf,在网上搜索了好久的解决方法,包括更改权限,DCOM组件权限等都试过了,都还是不能xls,xlsx转成swf格式的,

FlashPrinter.exe 源文件路径 -o 目标SWF文件路径

这个命令直接在服务器上的CMD下执行也是能成功转换的,想了好久,突然想到,在本地转换xls,xlsx的时候,弹出excel了,弹出flashpager了,flashpager转换完后关闭Excel的时候,弹出个保存的对话框,

这时候我查看了一下生成SWF的目录,发现还没有生成相关的SWF,当我点击是或者否的时候该excel文档对应的swf就生成了.

由此而想到那在服务器上是不是也是因为这个问题,在cmd中执行转换命令后,弹出excel窗口了,关闭的时候没人去按那个是或者否,所以就导致了在服务器上的excel一直没办法生成对应的swf,.

于是我就想在代码中执行了转换命令后再执行一个强制关闭excel进程的命令

pro.StandardInput.WriteLine("taskkill /f /im excel.exe /t");

 

结果经测试,还是不行,程序就卡在那个转换命令那里了,如果在卡的时候到服务器上打开任务管理器把excel进行手动结果之后,程序又能正常运行了,但是对应的swf文件还是没有生成成功,请教大家这个问题应该怎么解决 ? 或者还有另一种新的方法生成对应的swf?

牛腩的主页 牛腩 | 初学一级 | 园豆:-6
提问于:2012-03-21 17:55
< >
分享
最佳答案
1

sewfewr

奖励园豆:5
付鹏DragonDeal(龙易) | 初学一级 |园豆:190 | 2012-03-22 00:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册