Как конвертировать PDF в изображения с помощью C# и ImageMagick?

Я хотел бы конвертировать PDF-файл в формат.GIF, используя C# и magicknet.dll. Я добавил ссылку на MagickNet Dll в свой проект.

MagickNet.Magick.Init();
MagickNet.Image img = new MagickNet.Image("d:/aa.pdf");
img.Write("d:/bb.gif");
MagickNet.Magick.Term();
img.Dispose();
System.Runtime.InteropServices.SEHException не было обработано кодом пользователя
  Сообщение = "Внешний компонент выдал исключение."
  Источник ="ImageMagickNET"
  ErrorCode=-2147467259
  Трассировки стека:
       в Magick.Image.{ctor}(Image*, basic_string\,std::allocator >*)
       в ImageMagickNET.Image..ctor(String imageSpec)
       в Test1._Default.Button1_Click(Отправитель объекта, EventArgs e) в C:\Users\PANKAJ\Documents\Visual Studio 2008\Projects\Test1\Test1\Default.aspx.cs: строка 31
       в System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       в System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       в System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       в System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       в System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException: 

2 ответа

ImageMagick требует GhostScript для интерпретации PDF-файлов. Если вы хотите, чтобы вы могли вызвать DLL GhostScript напрямую (свяжитесь со мной через мой профиль, я вышлю вам aC# wrapper)

В качестве альтернативы вы можете использовать командную строку GhostScript или коммерческий сторонний компонент, например библиотеки PDF от Tall Components.

Magic.Net - это порт C# для популярной библиотеки ImageMagick. Установите Magick.net, используя пакет Nuget с URL-адреса https://www.nuget.org/packages/Magick.NET-Q16-AnyCPU/. Таким образом, вы можете использовать C#. Смотрите код ниже

Обратите внимание, что он будет добавлять изображения по вертикали. Точно так же вы можете добавлять по горизонтали, то есть заменять изображения.

using ImageMagick;

string inputPdf= @"C:\my docs\input.pdf";
string outputPng= @"C:\my docs\output.png";

using (MagickImageCollection images = new MagickImageCollection())
{
    images.Read(inputPdf);
    using (IMagickImage vertical = images.AppendVertically())
        {
            vertical.Format = MagickFormat.Png;
            vertical.Density = new Density(300);  
            vertical.Write(outputPng);
        }
}
Другие вопросы по тегам