2

我一直在尝试渲染图像,但没有积极的结果。有什么具体的我需要添加以使其工作。我不包括渲染良好的视图的其余部分,但在 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但它没有显示其中的图像。

4

2 回答 2

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 属性。

我希望这能帮到您!

于 2015-03-12T10:36:49.827 回答
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 的提交者。

于 2015-03-12T11:02:38.730 回答