0
我試圖將PDF文件轉換爲圖像,但我只獲得轉換的第一頁。 繼承人我有。 後面的代碼:ImageMagick.NET僅在ASP.NET MVC中呈現PDF文件的第一頁?
[HttpPost]
public ActionResult UploadPdf(HttpPostedFileBase file)
{
MemoryStream target = new MemoryStream();
file.InputStream.CopyTo(target);
byte[] data = target.ToArray();
MagickReadSettings settings = new MagickReadSettings();
settings.Density = new Density(300, 300);
MemoryStream convertedFile = new MemoryStream();
List<ImageModel> model = new List<ImageModel>();
using (MagickImageCollection images = new MagickImageCollection())
{
images.Read(data,settings); // Read PDF file
foreach (MagickImage image in images)
{
ImageModel innerModle = new ImageModel();
image.Write(convertedFile, MagickFormat.Png);
byte[] data2 = convertedFile.ToArray();
innerModle.Image = data2;
model.Add(innerModle);
}
}
return View(model);
}
視圖模型:
public class ImageModel
{
public byte[] Image{ get; set; }
}
查看:
@model List<DocumentViewerPoc.Models.ImageModel>
@foreach (var item in Model)
{
var base64 = Convert.ToBase64String(item.Image);
var imgSrc = String.Format("data:image/gif;base64,{0}", base64);
<img src="@imgSrc" />
}
我嘗試使用convertedFile.Flush();
但這並沒有爲我做的。我在這裏錯過了什麼? 謝謝:)
我想你會需要循環您的PDF的每一頁,並把它們轉換成獨立的圖像。 – Darren
images.Read(data,settings);產生2個對象(PDF轉換中的頁數相同),但兩者都具有相同的大小。我不知道該行是讀取第一頁還是讀取整個文檔。另外foreach循環應該循環遍歷圖像中的所有對象。所以我很困惑其實:/ – user3159792
在你的循環中你有'image.Write(convertedFile,MagickFormat.Png);' - 這不是寫完整的PDF,因此只有1頁。所以每個圖像都是相同的轉換文件。我什麼都看不到你只寫了一頁數據 - 我不知道這個庫,就是我在你的代碼中看到的。 – Darren