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