ImageMagic需要Ghostscript在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" />
}

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下面的代码位置。P>

MagickNET.SetGhostscriptDirectory(@"C:MyProgramGhostscript");

请注意,如果要商业使用Ghostscript,则需要许可证。

有ghostscript.net和ghostscript尖锐。请注意,如果您打算分发申请并使用其中的任何一个,则需要根据AGPL的条款开放申请,或寻求商业许可。

最新更新