PDF не загружается с помощью Rotativa на веб-сайте ASP.NET MVC - PullRequest
0 голосов
/ 02 ноября 2019

Я работаю в проекте электронной коммерции, разработанном в ASP.NET MVC, где в соответствии с требованием мне нужно сгенерировать pdf с описанием продукта. В соответствии с требованием я написал соответствующий код, где я добавляю информацию о продукте с названием изображения продукта, ценой и другой необходимой информацией.

Я объединил путь к папке с фиксированным изображением, который содержит мудрое изображение продукта и название продукта. product в качестве имени изображения и создания полного пути к изображению продукта для отображения изображений продукта с подробным описанием продукта в PDF.

все нормально работает на моем локальном сервере, а также на живом сервере, но проблема в том, что когда папка с изображениямидостиг размера 4,7 МБ, pdf не генерируется и продолжает загрузку без сообщения об ошибке.

Я использую ViewAsPdf в Rotativa. Пожалуйста, помогите мне найти решение для того же самого за последние 2 дня и посмотрите, что я пробовал.

Файл web.config

<webServices>
               <jsonSerialization maxJsonLength="50017075" />
           </webServices>

  <httpRuntime targetFramework="4.6.1" executionTimeout="2400" maxRequestLength="50017075" />

 <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="50017075" />
      </requestFiltering>
    </security>

Я использовал Rotativa в контроллере как:

[AllowAnonymous]
[HttpGet]
public ActionResult DownloadCatelogue()
{
    string customSwitches = "--footer-center \"Date: " + 
    DateTime.Now.Date.ToString("MM/dd/yyyy") + "                                                                                                                  
        Page: [page] of [toPage]\"" + " --footer-line --footer-font-size \"12\" -- 
        footer-spacing 2 --footer-font-name \"calibri light\"";

List<GroupedItem> GroupItem = new List<GroupedItem>();
var Items = Db.SP_GetItemsCatelogue(SessionFacade.UserSession != null ? "1" : "0", SessionFacade.UserSession != null ? Convert.ToString(SessionFacade.UserSession.CustomerId) : "0").ToList();
GroupItem = Items.GroupBy(f => f.SubCategory, i => i, (key, v) => new GroupedItem { GroupName = key, Items = v }).OrderBy(p => p.GroupName).ToList();

//orignal code
return new PartialViewAsPdf("Catelogue", GroupItem)
{
PageOrientation = Orientation.Portrait,
FileName = "Fauzi&Com catalog.pdf",
PageSize = Size.A4,
CustomSwitches = "--disable-smart-shrinking",
IsLowQuality = true
//CustomSwitches = customSwitches,
};
}

частичный вид:

@using Web.Utility
@using Web.Areas.Admin.Models.ViewModel
@model IEnumerable<GroupedItem>
<style>
body {
font-family: Arial;
font-size:12px !important;
}
.maxheight400{
max-height:270px !important;
}
.maxheight300 {
max-height: 150px !important;
}
/*.product {
page-break-inside: avoid
}

.breakhere {
page-break-after: always
}*/

.price-box {
padding: 1px;
}



.mainTitle {
font-size: 4.5rem !important;
line-height: 1.15;
text-align: center;
color: #21293c;
font-weight: 700 !important;
font-size: 2.5rem;
letter-spacing: -.01em;
margin-bottom: 1.1rem;
font: 400 1.4rem/1.25 "Poppins",sans-serif;
}

nav {
display: none;
}

header {
display: none;
}

.dynamicheight {
max-height: 450px;
min-height: 450px;
}
</style>
<main class="main">
<div class="product-single-container product-single-extended">
<div class="category-wrapper">
<div class="product-single-gallery product-item">
<img src="@Server.MapPath("~/assets/images/Catalogue/mainbanner.png")" style="height:300px;width:100%;" />
</div>
</div>
</div>
<div class="category-wrapper featured-section">
<h4 class="" style="font-size:30px;font-weight:600;font-family:Arial;text-align:center;">Our Products</h4>
@{
foreach (var group in Model)
{
<h3 class="carousel-title" style="clear:both;padding-top:5px;padding-bottom:5px;color:#6d6d6d;">@group.GroupName</h3>@*@group.GroupName*@
<div class="row" style="display:block;width:100%;margin-left:25px">
@{
foreach (var item in group.Items)
{
<div class="col-md-6 col-md-4 col-xl-2 @(SessionFacade.UserSession != null ? "maxheight400":"maxheight300")"  style="float:left;margin:10px;max-width:140px;">
<div class="product dynamicheight" id="dvproduct">
<div class="product-image-container" style="text-align: center;display: block;height:100px;max-height:100px;width:100px;max-width:100px;">

@{
if (item.Image != null && item.Image != "")
{
<img src="@Path.Combine(Server.MapPath(@"~/assets/images/products/"), item.Image)" style="height:100px;text-align: center;max-width:100px;">
}
else
{
<img src="@Server.MapPath("~/assets/images/Catalogue/noimg.png")" style="height:100px;text-align: center;max-width:100px;" />
}
}
</div>
<div class="product-details" style="margin-top:10px;margin-bottom:10px;border-top:1px solid #CCC;box-shadow:0 -5px 5px -5px #CCC;">
<div class="price-box" style="padding-top:2px;padding-bottom:2px;text-align:left;">
<span class="product-price" style="font-weight:600;word-wrap:break-word;display:block;font-size:10px;">@item.Description</span> @*@item.CustomPrice*@
</div>
<div class="price-box" style="">
<span class="product-price">Item #<a target="_blank" href="http://fauzico.com/Shop/ItemDetail?QBId=@item.QBId" style="color:#6d6d6d;text-decoration:none;text-align:center;">@item.ItemName</a></span> @*@item.CustomPrice*@
</div>
@{if (SessionFacade.UserSession != null)
{
<div class="price-box">
<span class="product-price">Unit Price: <span style="color:#6d6d6d;">$@Convert.ToDecimal(item.CustomPrice).ToString("0.00")</span></span> @*@item.CustomPrice*@
</div>
<div class="price-box">
<span class="product-price">Price: <span style="color:#6d6d6d;">$@Convert.ToDecimal(item.ItemPrice).ToString("0.00")</span></span> @*@item.ItemPrice*@
</div>
<div class="price-box">
@{
if (item.MSRP != null && item.MSRP != "")
{
<span class="product-price">MSRP: <span style="color:#6d6d6d;">$@item.MSRP</span></span>

}
else
{
<span class="product-price">MSRP: <span style="color:#6d6d6d;">$0.00</span></span>

}
}
</div>
}
}

</div>
</div>
</div>
}
}
</div>
}
}
</div>
</main>

...