ImageMagick 要求 Ghostscript 在 ASP.NET MVC 中 运行?
ImageMagic requires Ghostscript to run in ASP.NET MVC?
我正在尝试将 pdf 文件转换为图像,但效果很好。但是,我必须为它安装 ghostscript 到 运行。
有没有一种方法可以在不安装 ghostscript 的情况下复制所需的 DLL?
比如是否有 ghostscript 的 c# 包装器,如果有,我该如何使用它?
这是我的代码:
public ActionResult UploadPdf(HttpPostedFileBase file)
{
MemoryStream fileStream = new MemoryStream();
file.InputStream.CopyTo(fileStream);
byte[] ss = fileStream.ToArray();
MagickReadSettings settings = new MagickReadSettings();
settings.Density = new Density(100, 100);
List<ImageModel> model = new List<ImageModel>();
using (MagickImageCollection images = new MagickImageCollection())
{
images.Read(ss, settings); // Read PDF file
MemoryStream convertedFile;
foreach (MagickImage image in images)
{
convertedFile = new MemoryStream();
ImageModel innerModle = new ImageModel();
image.Write(convertedFile, MagickFormat.Png);
byte[] byteArray = convertedFile.ToArray();
innerModle.Images = byteArray;
model.Add(innerModle);
convertedFile.Flush();
convertedFile.Dispose();
}
}
return View(model);
}
查看模型:
public class ImageModel
{
public byte[] Images{ get; set; }
}
查看:
@model List<DocumentViewerPoc.Models.ImageModel>
<h2>UploadPdf</h2>
@foreach (var item in Model)
{
var base64 = Convert.ToBase64String(item.Images);
var imgSrc = String.Format("data:image/gif;base64,{0}", base64);
<img src="@imgSrc" />
}
有 Ghostscript.NET 和 ghostscript sharp。请注意,如果您打算分发应用程序并使用其中任何一个,您还需要根据 AGPL 的条款开源您的应用程序,或者寻求商业许可。
Magick.NET(我写的)的文档中有一个很好的答案。
如果你想转换EPS/PDF/PS文件,你只需要安装Ghostscript。确保只安装具有相同平台的 GhostScript 版本。如果您使用 64 位版本的 Magick.NET,您还应该安装 64 位版本的 Ghostscript。您可以将 32 位版本与 64 位版本一起使用,但如果保持平台相同,您将获得更好的性能。 Ghostscript 可以在这里下载:http://www.ghostscript.com/download/gsdnld.html。如果你不想在你的机器上安装 Ghostscript,你可以复制 gsdll32.dll/gsdl64.dll 和 gswin32c.exe/gswin64c.exe 到你的服务器并告诉 Magick.NET 文件所在的位置下面的代码。
MagickNET.SetGhostscriptDirectory(@"C:\MyProgram\Ghostscript");
请注意,如果您想在商业上使用 Ghostscript,则需要许可证。
我正在尝试将 pdf 文件转换为图像,但效果很好。但是,我必须为它安装 ghostscript 到 运行。 有没有一种方法可以在不安装 ghostscript 的情况下复制所需的 DLL? 比如是否有 ghostscript 的 c# 包装器,如果有,我该如何使用它? 这是我的代码:
public ActionResult UploadPdf(HttpPostedFileBase file)
{
MemoryStream fileStream = new MemoryStream();
file.InputStream.CopyTo(fileStream);
byte[] ss = fileStream.ToArray();
MagickReadSettings settings = new MagickReadSettings();
settings.Density = new Density(100, 100);
List<ImageModel> model = new List<ImageModel>();
using (MagickImageCollection images = new MagickImageCollection())
{
images.Read(ss, settings); // Read PDF file
MemoryStream convertedFile;
foreach (MagickImage image in images)
{
convertedFile = new MemoryStream();
ImageModel innerModle = new ImageModel();
image.Write(convertedFile, MagickFormat.Png);
byte[] byteArray = convertedFile.ToArray();
innerModle.Images = byteArray;
model.Add(innerModle);
convertedFile.Flush();
convertedFile.Dispose();
}
}
return View(model);
}
查看模型:
public class ImageModel
{
public byte[] Images{ get; set; }
}
查看:
@model List<DocumentViewerPoc.Models.ImageModel>
<h2>UploadPdf</h2>
@foreach (var item in Model)
{
var base64 = Convert.ToBase64String(item.Images);
var imgSrc = String.Format("data:image/gif;base64,{0}", base64);
<img src="@imgSrc" />
}
有 Ghostscript.NET 和 ghostscript sharp。请注意,如果您打算分发应用程序并使用其中任何一个,您还需要根据 AGPL 的条款开源您的应用程序,或者寻求商业许可。
Magick.NET(我写的)的文档中有一个很好的答案。
如果你想转换EPS/PDF/PS文件,你只需要安装Ghostscript。确保只安装具有相同平台的 GhostScript 版本。如果您使用 64 位版本的 Magick.NET,您还应该安装 64 位版本的 Ghostscript。您可以将 32 位版本与 64 位版本一起使用,但如果保持平台相同,您将获得更好的性能。 Ghostscript 可以在这里下载:http://www.ghostscript.com/download/gsdnld.html。如果你不想在你的机器上安装 Ghostscript,你可以复制 gsdll32.dll/gsdl64.dll 和 gswin32c.exe/gswin64c.exe 到你的服务器并告诉 Magick.NET 文件所在的位置下面的代码。
MagickNET.SetGhostscriptDirectory(@"C:\MyProgram\Ghostscript");
请注意,如果您想在商业上使用 Ghostscript,则需要许可证。