MvcRazorToPdf - 图像无法渲染,MVC4

时间:2014-08-12 17:31:31

标签: c# asp.net-mvc-4 razor mvcrazortopdf

我一直试图渲染图像但没有正面结果。是否需要添加任何具体内容才能使其正常工作。我不包括渲染的其余部分,但是在pdf中,图像丢失了。

我已按照以下链接:
https://github.com/andyhutch77/MvcRazorToPdf

查看

@model Test.Models.PdfExample    
@{
   ViewBag.Title = "Index";
   Layout = "~/Views/Shared/_Layout.cshtml";
   var imagePath = Server.MapPath("~/Content/Images");
 }


<div style="width: 200%; height: 80px;">
    <div>
        <img alt="Test123" src="@imagePath\image.jpg" /> // not rendering
        @*<img alt="Test123" src="@Url.Content("~/Images/image.jpg")" />*@
    </div>
</div>

我可以看到<div>占据width and height,但它没有显示其中的图像。

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。 我的解决方案是:在控制器中尝试使用Server.MapPath:

在模型中放入完整的图像路径
model.ImgPath = Server.MapPath("~/Content/Images/image.jpg");

然后使用

byte[] pdfOutput = ControllerContext.GeneratePdf(
                    model,
                    "ImagePage",
                    (writer, document) =>
                    {
                        document.SetMargins(/*put your margins here*/);
                        document.SetPageSize(PageSize.A4);
                        document.NewPage();
                    });

其中ImagePage是我用于此目的的.cshtml视图。请记住设置边距。

然后在视图中执行以下操作:

<img src="@Model.ImgPath" />

所以,在你的情况下,另一个问题可能是div属性的使用,尤其是百分比。我也有这个问题,最后我用TuesPechkin库做了一些事情,但我仍然将MvcRazorToPdf用于其他内容,例如带有动态内容的打印页面。取决于目的。尝试删除div属性。

我希望这会对你有所帮助!

答案 1 :(得分:1)

如果您想将HTML转换为PDF而不会出现任何问题,请使用Pechkin 这是Fluent API:

byte[] pdf = new Pechkin.Synchronized.SynchronizedPechkin(
                          new Pechkin.GlobalConfig()).Convert(
                                new Pechkin.ObjectConfig()
                               .SetLoadImages(true)   //control image rendering
                               .SetPrintBackground(true)
                               .SetScreenMediaType(true)
                               .SetCreateExternalLinks(true), html); //html is your html string

在较少的代码中,您可以获得更好的结果。它也可以在任何问题上运行IIS8,你还想要什么:-)仅供参考我不是Pechkin的提交者。