2011-07-15 4 views
0

は、私は、次のコマンドライン引数と一緒にGhostscriptを使用してPDFファイルからテキストを抽出して成功している:C#のGhostScript - 成功したTXTファイルにPDFから変換することができない

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

ポイントは注意する:私はコピー次の3つのファイルをインストールディレクトリから自分のC:\ディレクトリにコピーします。

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

手動でコマンドラインからGhostscriptを実行しているとき、私は次の操作を行います。 ファイル名を指定して実行> CMD> CDのC:\は(その後、上記の引数の入力に進んを)。

(上記のコマンドが機能し、 "test.txt"という名前の新しいファイルがC:\ドライブの適切なpdfデータとともに表示されます)。

ただし、コマンドラインでGhostScriptを実行しようとすると、正常ではありません。私のC#Winフォームアプリケーションで

、私は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

1つの明らかなエラーは、引用符でまさにあなたのコードではなくgsWin32c.exe – antlersoft

+2

まずでTEST.EXEを実行しているように見えるということですか?もう一度間違ったアプリケーションを起動してください。正しいファイルを起動していても、作成しているファイルの3番目にtest.txtの内容は含まれません。すべての質問を飛ばして、これを読んでください:http://www.mattephraim.com/blog/tag/ghostscriptsharp/ –

+0

私はTest.exeに名前を変更しました - これは正しいアプリケーションです。また、引用符は '\ u0022'の「記号」の定数です。 –

答えて

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をクリック取得するには、次のコードをコンパイルします。完了!

enter image description here

+0

GhostScriptが実行されているように見えますが、私はこのファイルを読むことができません。 (Ghostscriptファイルとpdfファイル)は、同じディレクトリ(Cドライブではなく、デスクトップ上)にあります。そこには、GhostScriptが自動的に閉じます。 Visual Studioによってスローされたエラーはありません。あなたがteamviwerまたは他のリモートアプリケーションを持っているなら、何が起こっているかを見せたいです! –

+0

十分に価値のある答えについてお話しください!うわー! –

関連する問題