2016-12-31 3 views
1

Я использую оболочку C# для преобразования PDF-файлов в изображения с помощью Ghostscript, однако я не могу правильно ссылаться на dll. У меня есть DLL, хранящийся в папке BIN (также не знаю, если это лучшее место, чтобы держать его там или нет) Вот мой код:Как ссылаться на Ghostscript DLL в C#

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 мог не удалось найти ошибка. Вот путь я получаю

enter image description here

Я думаю, что он должен делать с двойным/и «файл: //» в строке DLLPath. И должен ли я также указать LipPath? Любая помощь ??

+0

ур ехе под бен \ отладки? –

+0

нет только DLL – user3159792

+0

Путь Dll не выглядит хорошо, и в этом проблема. Откуда у вас этот префикс «файл:»? Он должен выглядеть так: «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"); 
Смежные вопросы