Как конвертировать 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);
}
}