首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MvcRazorToPdf -图像未渲染,MVC4

MvcRazorToPdf -图像未渲染,MVC4
EN

Stack Overflow用户
提问于 2014-08-13 01:31:31
回答 2查看 2.8K关注 0票数 2

我一直在尝试渲染图像,但没有得到积极的结果。我需要添加什么特定的东西才能让它工作吗?我没有包含渲染良好的视图的其余部分,但在pdf中,图像丢失。

我点击了下面的链接:

https://github.com/andyhutch77/MvcRazorToPdf

视图

代码语言:javascript
复制
@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,但它没有显示其中的图像。

EN

回答 2

Stack Overflow用户

发布于 2015-03-12 18:36:50

我也有同样的问题。我的解决方案是:在控制器中,尝试使用Server.MapPath将完整的图像路径放入模型中:

代码语言:javascript
复制
model.ImgPath = Server.MapPath("~/Content/Images/image.jpg");

然后使用

代码语言:javascript
复制
byte[] pdfOutput = ControllerContext.GeneratePdf(
                    model,
                    "ImagePage",
                    (writer, document) =>
                    {
                        document.SetMargins(/*put your margins here*/);
                        document.SetPageSize(PageSize.A4);
                        document.NewPage();
                    });

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

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

代码语言:javascript
复制
<img src="@Model.ImgPath" />

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

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

票数 3
EN

Stack Overflow用户

发布于 2015-03-12 19:02:39

如果你想毫无问题地将HTML转换为PDF,只需使用Pechkin就可以了,这里是Fluent API:

代码语言:javascript
复制
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的提交者。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25270553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档