我成功地使用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();
有没有人看到我的代码有任何明显的错误?我很感激能得到的任何帮助。
谢谢,
埃文
答案 0 :(得分:2)
制作名为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
编译以下代码以获取名为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();
}
}
将所有内容放在同一目录中,然后双击myapp.exe
。完成!