我在服务模式下运行c#应用程序。我正在使用pdf2swf工具将odf转换为swf格式。以pdf格式保存的图像正在转换。但是,如果添加到pdf的任何测试未在服务模式下转换。 但是当以UI模式(Consoleapplication.exe)运行时,一切都将被转换。
string inputFileName = this.Filename;
string outputFileName = inputFileName.Replace("pdf", "swf");
StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0} -o {1}", inputFileName, outputFileName);
string executingDirPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Replace("file:\\", "");
string dataDirectoryPath = Path.Combine(executingDirPath, "pdf2swf.exe");
ProcessStartInfo psi = new ProcessStartInfo(dataDirectoryPath, sb.ToString());
psi.UseShellExecute = false;
System.Diagnostics.Process pdf2swf = new System.Diagnostics.Process();
pdf2swf.StartInfo = psi;
pdf2swf.Start();
pdf2swf.WaitForExit();
pdf2swf.Close();
pdf2swf.Dispose();
此致 桑杰塔
答案 0 :(得分:2)
直接使用进程启动pdf2swf.ext可能有一些特权问题。我用另一种方法来解决这个问题,写一个批处理文件,然后按进程运行批处理文件。
批处理文件样本:
c:
cd C:\Program Files (x86)\SWFTools\
pdf2swf.exe -f -T 9 -t "%1" -o "%2"
程序代码:
Process p = new Process();
string path = basePath + "/plugin/ConvertToSwf.bat";//batch file path
ProcessStartInfo pi = new ProcessStartInfo(path, filePath + " " + swfPath);//passing the file path and converted file path to batch file
pi.UseShellExecute = false;
pi.RedirectStandardOutput = true;
p.StartInfo = pi;
p.Start();
p.WaitForExit();
答案 1 :(得分:1)
我最近遇到了类似的问题。我通过添加一个单独的控制台应用程序(Consoleapplication.exe)解决了这个问题,该应用程序具有在没有shell的服务器上运行的管理权限。
另外,请尝试升级到最新版本的pdf2swf。
答案 2 :(得分:0)
FYI。我最近有这个问题(认为这是字体没有被嵌入但实际上缺少转换后的swf中的所有文本)。为我修好的是设置:
pi.UseShellExecute = false;
AND设置工作目录;
pi.WorkingDirectory = "C:\windows\temp"; // path where read & write is