2

我在服务模式下运行 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();

问候桑吉塔

4

3 回答 3

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();
于 2014-04-14T06:23:37.437 回答
1

我最近遇到了类似的问题。我通过添加一个单独的控制台应用程序(Consoleapplication.exe)解决了这个问题,该应用程序具有在我的服务器上运行而没有外壳的管理权限。

另外,尝试升级到最新版本的 pdf2swf。

于 2014-04-14T06:10:25.117 回答
0

供参考。我最近遇到了这个问题(以为是没有嵌入字体,但实际上缺少转换后的 swf 中的所有文本)。为我解决的问题是设置:

pi.UseShellExecute = false;

并设置工作目录;

pi.WorkingDirectory = "C:\windows\temp"; // path where read & write is
于 2016-05-03T00:36:59.257 回答