したがって、私はMatthew Ephraim の GhostscriptSharpを使用しています。これは、ASP.Net MVC プロジェクトのアンマネージ Win32 Ghostscript DLL の単純な C# ラッパーです。背景:
私がやろうとしているのは、ユーザーに PDF をアップロードしてもらい、そのドキュメントを画像に変換して、選択したディレクトリに保存できるようにすることです (また、他の OOP を実行して、その新しい画像をサイトに結び付けます) .
私は Ephraim 氏のラッパー クラス (GhostscriptSharp) を使用することにしました。これは、使い方が簡単で、DLL の API に比較的クリーンにアクセスできるためです。
それをテストするために、ダミーの C# コンソール アプリケーションを作成して、DLL をロードしてアクセスし、ローカル ディスク上の PDF ファイルを渡し、JPG を同じローカル ディスクに書き込むことができることを確認しました。いくつかの学習経験の後、私は成功しました。私はそれを C:\INPUT.pdf に渡し、それは私に C:\OUTPUT.jpg を渡します。
ただし、コンソール アプリケーションにあった GhostScriptSharp コードを ASP.NET MVC プロジェクトに統合した後、P/invoke で DLL を呼び出していたところまで、Ghostscript が int/error code を返します-100
。これは致命的です。エラー ( E_Fatal
GhostScript ソース コードで呼び出されます)。HTML フォームを介してアップロードされたファイルと、作業中のコンソール アプリケーションで使用したのとまったく同じハードコードされたパスを渡した場合の両方で、同じ結果が得られます。
参考までに、例外がスローされる行は、GhostScriptSharp.cs (CallApi
関数内) の 93 ~ 97 行です。
int result = InitAPI(gsInstancePtr, args.Length, args);
if (result < 0) {
throw new ExternalException("Ghostscript conversion error", result);
}
result
isであるため、明らかに例外がスローされます-100
。
InitAPI が呼び出されると、インスタンス ptr は有効ですint
(ただし、GS のインスタンスが正しいかどうかはわかりません)。args の長さは 20 (ですstring[]
) の有効な GhostScript オプション (正しくエスケープされたパスを含む)入力および出力ファイルに)。
簡単に言えば、私は何が間違っているのですか?-100
ここで問題が発生する可能性があることを示すドキュメントがないため、エラー コードはすべてを網羅しているように見えます。
どんな助けでも大歓迎です、事前に感謝します。