2016-12-31 32 views
1

Ghostscriptを使用してPDFを画像に変換するためにC#ラッパーを使用していますが、dllを正しく参照しているようです。C#でGhostscript DLLを参照するには

byte[] fileData = null; 
      using (var binaryReader = new BinaryReader(Request.Files[0].InputStream)) 
      { 
       fileData = binaryReader.ReadBytes(Request.Files[0].ContentLength); 
      } 

    string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase); 

    Ghostscript.NET.Rasterizer.GhostscriptRasterizer rasterizer = null; 
    Ghostscript.NET.GhostscriptVersionInfo vesion = new Ghostscript.NET.GhostscriptVersionInfo(new Version(0, 0, 0), path + @"\gsdll64.dll", string.Empty, Ghostscript.NET.GhostscriptLicense.GPL); 
    Stream inStream = new MemoryStream(fileData); 
    MemoryStream outStream = new MemoryStream(); 
    List<Image> imageList = new List<Image>(); 
    using (rasterizer = new Ghostscript.NET.Rasterizer.GhostscriptRasterizer()) 
    { 
     rasterizer.Open(inStream, vesion, false); 
     for (int i = 1; i <= rasterizer.PageCount; i++) 
     { 
      //string pageFilePath = Path.Combine(outputPath, Path.GetFileNameWithoutExtension(file) + "-p" + i.ToString() + ".jpg"); 
      int dpi = 200; 
      Image img = rasterizer.GetPage(dpi, dpi, i); 
      img.Save(outStream, ImageFormat.Jpeg); 
      Image img = new Image 
      { 
       imgByteArray = outStream.ToArray() 
      }; 
      imageList.Add(image); 
     } 
     rasterizer.Close(); 
    } 

私ができるGhostscriptのネイティブライブラリを取得しています: 私はbinフォルダに保存されているDLLを持って は、ここに私のコードです(つまり、そこかどうか、それを維持するのに最適な場所だ場合にもわかりません)見つからないエラー。たDllPath文字列に:ここに は、私はそれがダブル/と「//ファイル」に関係していると思う私は

enter image description here

を取得するパスです。 LipPathも指定する必要がありますか? ヘルプがありますか?

+0

はビン\デバッグの下でウルexeファイルのですか? –

+0

DLLだけでなく – user3159792

+0

Dllパスが正しく表示されず、それが問題です。どこからこの "file:"プレフィックスを取得しましたか? 「c:\ users \ raeda \ documents \ visual s ...... \ bin \ gsdll64.dll」のように表示されます。 – HABJAN

答えて

1

あなたはghostscriptのdllファイルのパスをこのように作る必要があり、あなたの場合:

string binPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
string gsDllPath = Path.Combine(binPath, Environment.Is64BitProcess ? "gsdll64.dll" : "gsdll32.dll"); 
関連する問題