4

GhostScript を使用して PDF から画像を作成しようとしています。これが私のコードです:

GhostscriptWrapper.ConvertToBMP(inputPDFFilePath, outputBMPFilePath);

そして、ここに私のGhostscriptWrapperクラスがあります:

public class GhostscriptWrapper
{
    public static void ConvertToBMP(string inputPath, string outputPath)
    {
        CallAPI(GetArgs(inputPath, outputPath));
    }

    private static void CallAPI(string[] args)
    {
        IntPtr ptr;
        CreateAPIInstance(out ptr, IntPtr.Zero);
        InitAPI(ptr, args.Length, args);
        Cleanup(ptr);
    }

    private static void Cleanup(IntPtr gsInstancePtr)
    {
        ExitAPI(gsInstancePtr);
        DeleteAPIInstance(gsInstancePtr);
    }        

    [DllImport("gsdll32.dll", EntryPoint="gsapi_new_instance")]
    private static extern int CreateAPIInstance(out IntPtr pinstance,
        IntPtr caller_handle);

    [DllImport("gsdll32.dll", EntryPoint="gsapi_delete_instance")]
    private static extern void DeleteAPIInstance(IntPtr instance);

    [DllImport("gsdll32.dll", EntryPoint="gsapi_exit")]
    private static extern int ExitAPI(IntPtr instance);                

    [DllImport("gsdll32.dll", EntryPoint="gsapi_init_with_args")]
    private static extern int InitAPI(IntPtr instance, int argc,
        string[] argv);

    private static string[] GetArgs(string inputPath, string outputPath)
    {
        return new string[] { "-dNOPAUSE", "-dBATCH", "-dSAFER",
            "-dTextAlphaBits=4", "-dGraphicsAlphaBits=4", "-sDEVICE=bmp16m",
             string.Format("-r{0}x{1}", 0x48, 0x48), "-dEPSCrop",
             string.Format("-sOutputFile={0}", outputPath), inputPath };
    }
}

私の問題は、ページでコードを実行すると、次のエラーが発生することです。

DLL 'gsdll32.dll' をロードできません: 指定されたモジュールが見つかりませんでした。(HRESULT からの例外: 0x8007007E)

私は実際のdllファイルを持っています.binフォルダへの参照を追加する必要があるのではないかと思いましたが、それを試みると、次のエラーが発生します:

「D:\gsdll32.dll」への参照を追加できませんでした。コンポーネントにタイプ ライブラリが見つかりませんでした

だから私はちょっと立ち往生しています-私はdllを持っていますが、それを参照する方法がわかりません。私が何をする必要があるか知っている人はいますか?

4

4 に答える 4

5

パッケージ マネージャー コンソールで次のように入力します。Install-Package Ghostscript.Net

于 2013-10-16T20:36:35.710 に答える
2

名前だけでなく、dll の完全なパスを試してください。あなたのdllが

D:\TestApplication\bin\gsdll32.dll

それから、

[DllImport("gsdll32.dll", EntryPoint="gsapi_new_instance")]

上記のステートメントは

[DllImport("D:\\TestApplication\\bin\\gsdll32.dll", EntryPoint="gsapi_new_instance")].

于 2015-07-20T07:41:21.217 に答える
2

私が理解しているように、おそらくDLLがC#または.NET用に作成されていない限り、DLLに「参照を追加」することはできませんが、Ghostscriptはそうではなく、Cで作成されています.

Win32 API 呼び出し「LoadLibrary」または C#/.NET に相当するものを使用する必要があります。

最初のエラーは、DLL が単に見つからないように見えます。アプリケーションを起動したときに、現在のディレクトリに DLL のコピーがありますか?

于 2012-09-06T07:31:09.460 に答える
1

他の管理された Ghostscript ラッパーを確認してください。

この他の SO 記事もチェックしてください: C# Ghostscript Wrapper

于 2012-10-10T17:09:49.833 に答える