C#GhostScript - 无法成功从PDF转换为TXT文件

时间:2011-07-15 16:14:43

标签: c# winforms process ghostscript

我成功地使用GhostScript从PDF文件中提取文本以及以下命令行参数:

gswin32c.exe ^
  -q -dNODISPLAY -dSAFER -dDELAYBIND ^
  -dWRITESYSTEMDICT ^
  -dSIMPLE ^
  -c save ^
  -f ps2ascii.ps ^
   "test.pdf" ^
  -c quit ^
  >"test.txt"

注意事项:我将以下三个文件从安装目录复制到我的C:\目录中。

1)gsdll32.dll
2)gsdll32.lib
3)gswin32

通过命令行手动运行GhostScript时,我执行以下操作: 运行> CMD> cd C:\(然后继续输入上述参数)。

(以上命令有效,名为“test.txt”的新文件出现在我的C:\驱动器中,并带有相应的pdf数据。)

但是,尝试通过命令行执行GhostScript时,我没有成功。

在我的C#Winform应用程序中,我使用以下代码执行GhostScript:

Process p1 = new Process();
p1.StartInfo.FileName = @"C:\test.exe";
                    p1.StartInfo.UseShellExecute = false;

                    p1.StartInfo.WorkingDirectory = @"C:\";
                    p1.StartInfo.Arguments = " -q -dNODISPLAY -dSAFER -dDELAYBIND -dWRITESYSTEMDICT -dSIMPLE -c save -f ps2ascii.ps " + quote + @"C:\h.pdf" + quote + " -c quit >" + quote + @"C:\test.txt" + quote;
                    File.WriteAllText(@"C:\hhh.txt", p1.StartInfo.Arguments);
                    p1.Start();

有没有人看到我的代码有任何明显的错误?我很感激能得到的任何帮助。

谢谢,

埃文

1 个答案:

答案 0 :(得分:2)

  1. 制作名为batch.bat的批处理文件,如下所示。

    rem batch.bat
    rem %1 represents input file name without extension.
    echo off
    gswin32c -q -dNODISPLAY -dSAFER -dDELAYBIND -dWRITESYSTEMDICT -dSIMPLE -c save -f ps2ascii.ps %1.pdf -c quit >%1.txt
    
  2. 编译以下代码以获取名为myapp.exe

    的控制台应用程序
    using System.Diagnostics;
    
    class myapp
    {
        public static void Main()
        {
            Process p1 = new Process();
            p1.StartInfo.FileName = "batch.bat";
            p1.StartInfo.Arguments = "test";
            p1.StartInfo.UseShellExecute = false;
    
            p1.Start();
            p1.WaitForExit();
         }
     }
    
  3. 将所有内容放在同一目录中,然后双击myapp.exe。完成!

  4. enter image description here