RotativaPDF css无法在服务器上运行

时间:2015-05-11 18:11:07

标签: asp.net asp.net-mvc rotativa

我有一个报告,它通常在带有css的localhost中工作。 但是当我穿上服务器时不会加载带有bundle的css。

代码:

public ActionResult ParseSendPDF()
{
    var result = Session["Search"] as List<Order>;
    ViewAsPdf pdf = new ViewAsPdf("SendPDF", result);
    pdf.PageOrientation = Rotativa.Options.Orientation.Landscape;
    pdf.PageSize = Rotativa.Options.Size.A4;
    pdf.CustomSwitches = "--background";
    foreach (var results in result)
    {
        foreach (var detail in results.OrderDetails)
        {
             var description = detail.Description;
             if (description.Length > 84)
             {
                 SetBreakLine(ref description);
                 detail.Description = description;
             }
        }
    }
    return pdf;
}

查看:

@model List<Models.Order>
@{
    Layout = null;
 }

 <!DOCTYPE html>
 <html>
 <head>
    <meta name="viewport" content="width=device-width" />
    <title>Reports</title>
    @Styles.Render("~/Content/css")
    @Styles.Render("~/Content/trip")
    @Styles.Render("~/Content/datetimepicker")
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/ajax")
    @Scripts.Render("~/bundles/modernizr")
    @Scripts.Render("~/bundles/datetimepicker") 
    <style type="text/css">
        table { page-break-inside:auto }
        tr    { page-break-inside:avoid; page-break-after:auto }
        thead { display:table-header-group }
        tfoot { display:table-footer-group }
    </style>
</head>
<body>
    <img style="margin-top: -7px;" class="img-responsive"    src="~/Content/Images//logo.png" />
    <h1 class="text-center">Reports</h1>
    @Html.Partial("_Index", Model)
</body>
</html>

在localhost工作但在服务器中,我的css和徽标无效。

3 个答案:

答案 0 :(得分:2)

我花了好几个星期来解决这个问题,我已经尝试了Stack Overflow提供的所有建议:

  • 为在IIS服务器上创建的用户提供了带有用户名和密码的自定义开关
  • 为在Active Directory上创建的用户提供了自定义开关,其中包含用户名和密码(因为我的应用程序通过Active Directory进行了身份验证)
  • 调整了对IIS上wkhtmltopdf.exe的所有用户的权限
  • 将.min和普通css文件添加到捆绑列表
  • 调整CSS文件的权限

最后我终于删除了捆绑引用,并在我的布局页面标题中明确说明了我的CSS文件,并且它有效。

<link rel="stylesheet" type="text/css" href="~/Content/bootstrap.min.css"/>

答案 1 :(得分:1)

当您的网站使用Windows身份验证时,可能会出现这种情况。

您需要在web.config中授予对CSS文件的访问权限,如下所示:

<location path="content">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

答案 2 :(得分:0)

使用以下代码..这可以帮助您

@Styles.Render("@Server.MapPath(~/Content/css)")
@Styles.Render("@Server.MapPath("~/Content/trip)")
@Styles.Render("@Server.MapPath("~/Content/datetimepicker)")
@Scripts.Render("@Server.MapPath("~/bundles/jquery)")
@Scripts.Render("@Server.MapPath("~/bundles/ajax)")
@Scripts.Render("@Server.MapPath("~/bundles/modernizr)")
@Scripts.Render("@Server.MapPath("~/bundles/datetimepicker)")