Используя rotativa, я успешно генерирую pdf из частичного представления, используя ActionAsPdf.
Проблема:
Кажется, что сгенерированный PDF игнорирует bootstrap классов.
Просмотр:
@{
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-файле перечислены только строки, а не форматирование / выравнивание содержание.
Inline css распознается, но это не то, чего я хочу.
Google не мог мне помочь. Какие-либо предложения?
РЕДАКТИРОВАТЬ
Кажется, что Ротатива не может загрузить bootstrap css. Я попытался загрузить его, используя Server.MapPath и <link href="~/Content/bootstrap.css">
, но это не помогло. Я также импортировал bootstrap. css в мою таблицу стилей по умолчанию (которая корректно загружается Rotativa), но это тоже не помогло.
РЕДАКТИРОВАТЬ 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 выглядит следующим образом ...: