不使用pdf2swf转换pdf中的文本内容

时间:2014-04-09 13:03:19

标签: c# pdf2swf

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

此致 桑杰塔

3 个答案:

答案 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