print2Flash3是一款转换软件 作用是通过该软件将office文档转换为swf
那么小弟目前在本地测试通过 本地服务器测试通过 但是部署到外网则死活转换不了
具体情况如下
1.print2Flash3已安装 版本3.1 已破解服务模式
2.在服务器上运行该软件的cmd命令转换文件成功 代表着该软件可用
3.IIS7项目的NetworkService账户已授予最大权限(完全控制)
4.NetworkService已经添加到Administrator组
5.office的Dcom配置已设置允许远程访问
6.IIS7项目的应用程序池的标识已设置为本地系统
7.服务器是WIN2008R2-64位
转换方法的代码如下:
///
/// 执行进程
///
/// 输入.doc文件路径
/// 输出.swf文件路径
public string ProcessExec(string sourceFileName, string outPutFileName)
{
try
{
string refstr = "";
string flashPrinter = @ConfigurationManager.AppSettings["Print2Flash3path"].ToString();//@"C:\Program Files\Print2Flash3\p2fServer.exe";//
Process pc = new Process();
pc.StartInfo.FileName = flashPrinter;
pc.StartInfo.Arguments = sourceFileName + " " + outPutFileName;//调用命令
pc.StartInfo.CreateNoWindow = true;
pc.StartInfo.UseShellExecute = false;
pc.StartInfo.RedirectStandardInput = false;
pc.StartInfo.RedirectStandardOutput = false;
pc.StartInfo.RedirectStandardError = true;
pc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
pc.Start();
while (!pc.HasExited)
{
continue;
}
pc.WaitForExit();
pc.Close();
pc.Dispose();
return "";
}
catch (Exception ex)
{
return ex.ToString();
}
}
由于代码已经完成 所以希望能在不更换转换工具的情况下解决该问题
并且我也知道目前的权限账户设置很不安全 如果有更好的方案请在线指导一下
QQ84658134 十分感谢
那么小弟目前在本地测试通过 本地服务器测试通过 但是部署到外网则死活转换不了
答:建议通过外网时把文件先上传到服务器,然后再进行转换,转换后再下载到本地,这样应该没有问题了
上传是OK的 现在我是要用代码来完成转换而不是手动呢。
驱动程序或者权限的问题。因为这种转换程序依赖虚拟打印机,而虚拟打印机驱动在32bit下和64bit下不通用。
你是不是,iis 池(应用程序池)用的是32位设置,但是程序exe 是 64bit 的
或
iis 池是 64bit 设置,程序是 32bit 的?
看一下你Web程序所在的池的高级里面的,启用32位程序这里。
还有你的 print2Flash3 是,64bit 的还是 32bit 的?
楼主用的是命令行模式啊!还有一种引用dll 的方式,如下面文章,可以试验试验是否可以提示更详细的错误!
http://www.cnblogs.com/piaopiao7891/p/3411704.html
官方帮助
http://print2flash.com/help/PrintedDocInterface.php
具体是报什么错误呢?
你写一个Exe的程序在服务器上执行看能不能转换成功。
设置一下C:\Program Files\Print2Flash3\p2fServer.exe的兼容性。
如果是权限问题,而且命令行已经通过测试了,那么就封装一个进程专门调用打印部分,web server通过进程通信等方式传递参数,通知进程进行文档转换。