8

我目前正在创建一个 MVC 4 Web 应用程序。

我有一个动作,它的基本背景图像总是相同的,然后是一个箭头图像,它根据动作中收集的信息而改变程度。

我称这个动作使用

<img src="@Url.Action("trend-image", "NonReg_Reports")" alt="background" width="245" height="105" />

当它被调用并且只是显示一个 HTML 网页时,它工作正常。它给了我HTML。

<img src="/nonreg-report/01495344/trend-image" alt="background" width="245" height="105">

然后我使用 Rotativa / Wkhtmltopdf 将此 HTML 页面转换为 PDF。这运行与上面相同的代码。

问题是如果我使用上面的代码,我只会得到一个带有替代文本的白框。

如果我使用<img src="~/Content/images/trend_back_medium.png" alt="astuff" />which 是我项目中的实际背景图像,它可以正常工作。

由于使用方式,上面代码中的图像无法保存在任何地方。我认为这是一个路径问题,但是在尝试了很多不同的事情之后,我仍然无法让它工作。

任何建议或帮助将不胜感激谢谢。

4

7 回答 7

20

我有同样的问题。正常的 html 视图可以显示图片,pdf 不显示。我用 Server.MapPath 指向图片,没关系...

<img src="@Server.MapPath("~/Folder/SubFolder/Subfolder/ImageName.png")" />

我希望这个能帮上忙

亚当

于 2014-07-14T11:03:55.267 回答
3

我遇到了同样的问题,我找到了一种解决方法,虽然不是很好,但它适合我的需要。

Rotativa(Wkhtmltopdf?) 似乎对从 http 处理程序返回的图像有问题(至少在我的情况下)。因此,为了处理这种情况,在控制器操作中,在返回new ViewAsPdf...我的代码之前手动将文件保存到某个本地“临时”文件夹,并将渲染视图中的图像“src”替换为以服务器路径方式指向该本地文件的路径,例如:http://localhost/img/temp/trend-image.png. 这不是一个好的解决方案,如果您已经找到更好的解决方案,请告诉我。

于 2013-05-03T19:05:10.420 回答
2

将属性 [System.Web.Mvc.AllowAnonymous] 添加到返回图像的控制器方法中为我解决了这个问题。

于 2015-02-02T09:23:14.380 回答
1

通过css似乎可以正常工作...

我试图在页面顶部显示一个徽标并用 div 切换它并将高度和宽度设置为图像的高度和宽度。

CSS:

div.logo {
    background-image: url("/images/logo/logo.png");
    height: 53px;
    width: 185px;
}

HTML:

<div class="logo"></div>
于 2014-11-24T14:22:34.020 回答
0

我认为这可能归结为基本上缺少“.png”位。

您可以添加这样的映射/nonreg-report/01495344/trend-image.png»/nonreg-report/01495344/trend-image并使两个 url 都处于活动状态,为什么不呢?这样 wkhtmltopdf 就被愚弄了,您仍然拥有动态图像,而无需将其保存在磁盘上的任何位置。动态网址可以工作,我这样做是为了将 gif2png 实时转换为 wkhtmltopdf。

拥有一个绝对网址也可能会有所帮助,我认为您可以这样做:

src="@Url.Action("trend-image", "NonReg_Reports", null, Request.Url.Scheme)"
于 2013-10-04T12:10:26.157 回答
0

我发现在我的页面中,图像没有显示,因为它们是 .gif 文件。Rotativa 可能会遇到 GIF 问题。当我将图像更改为 .jpg 或 .png 时,一切正常。

于 2013-10-03T23:11:18.260 回答
-1

如果您要指定高度和宽度,请确保您应该将其写在样式标签中,例如<some-tag style="height: 100px; width:100px">

于 2017-08-05T10:33:57.857 回答