首页 > 解决方案 > Rotativa:忽略引导类

问题描述

使用 rotativa,我成功地使用 ActionAsPdf 从局部视图生成了 pdf。
问题:
生成的 pdf 似乎忽略了引导类。

看法:

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@if (Model != null)
{
    <div class="container">
        <div class="flex-column align-items-start">
            <div class="d-flex w-100 justify-content-between">
                <div>
                    <p class="font-weight-bold">@Model.AssemblyOrderID</p>
                    <span class="font-weight-bold mb-1">@Model.Billing_Unit</span>
                </div>
                <div>
                    <p class="font-weight-bold">@("Materialschein erstellt am " + DateTime.Now.ToShortDateString())</p>
                </div>
            </div>
        </div>
    </div>
    <hr />
    foreach (var article in Model.Articles)
    {
        <div class="container">
            <div class="flex-column align-items-start mb-4">
                <div class="d-flex w-100 justify-content-between">
                    <div>
                        <p class="font-weight-bold">@("Benötigt: " + article.ArticleAmount + "x " + article.ArticleNumber)</p>
                    </div>
                    <div>
                        <p class="font-weight-bold">@("Fehlende Anzahl: " + article.ArticleAmountMissing)</p>
                    </div>
                </div>
            </div>
        </div>
    }
}

pdf 仅列出行,而不是格式化/对齐内容。
内联 css 被识别,但这不是我想要的。

谷歌帮不了我。有什么建议么?

编辑
Rotativa 似乎无法加载引导 css。我尝试使用 Server.MapPath 加载它并使用<link href="~/Content/bootstrap.css">,但这没有帮助。我还在我的默认样式表(由 Rotativa 正确加载)中导入了 bootstrap.css,但这也没有帮助。

编辑 02
这里要求的是生成 pdf 的代码:

public ActionResult PrintPDF(string assemblyOrderID)
{
    return new ActionAsPdf("PrintableView", new { assemblyOrderID = assemblyOrderID });
}

public ActionResult PrintableView(string assemblyOrderID)
{
    var assemblyOrder = dataService.GetAssemblyOrderByNumber(assemblyOrderID);

    if (assemblyOrder != null)
    {
        var viewModel = new StuffNoteViewModel();

        viewModel.AssemblyOrderID = assemblyOrder.AssemblyOrder_PrefixLeft + assemblyOrder.AssemblyOrder_PrefixMiddle + assemblyOrder.AssemblyOrder_Number;
        viewModel.Billing_Unit = assemblyOrder.Work_Address.Billing_Unit;

        var articles = dataService.GetArticlesForAssemblyOrder(assemblyOrderID);

        if (articles.Count > 0)
        {
            foreach (var article in articles)
            {
                viewModel.Articles.Add(new AddArticleItemViewModel()
                {
                    ArticleAmount = article.Quantity,
                    ArticleAmountMissing = article.Quantity - article.OrderQuantity,
                    ArticleNumber = article.Article.Article_Number,
                    Short_Description = article.Article.Short_Description
                });
            }
        }

        return PartialView("~/Areas/AssemblyOrders/Views/Shared/Partials/AssemblyOrderStuffNote.cshtml", viewModel);
    }

    return null;
}

例如,如果我创建一个包含这样一行和列的视图:

<div class="container">
    <div class="row">
        <div class="col-lg-6 col-md-6 col-6" style="background-color: lightcoral;">left</div>
        <div class="col-lg-6 col-md-6 col-6" style="background-color: lightblue;">right</div>
    </div>
</div>

PDF看起来像这样......:

在此处输入图像描述

标签: asp.net-mvcrotativa

解决方案


尝试将以下内容用作引导 v3.3.7 的 css 链接:

link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"

使用col-sm而不是col-lg-6.


推荐阅读