我正在尝试将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的条款开放申请,或寻求商业许可。