Я понял, как это сделать, используя Rotativa.
Rotativa уважает атрибут CSS 'page-break-after', поэтому с его помощью вы можете добавить разрыв страницы в своем представлении всякий раз, когда хотите разрывать страницу, что позволяет использовать цикл foreach в вашем представлении для перечисления заказов ,
В моем контроллере у меня есть следующее действие, которое отвечает на кнопку «распечатать все». Измерения по высоте и ширине, относятся к стандартному размеру для листа бумаги формата А4:
public ActionResult Print()
{
var r = new ActionAsPdf("IndexPrintFormat")
{
FileName = DateTime.Now.ToShortDateString()+".pdf",
PageSize = Rotativa.Options.Size.A4,
PageOrientation = Rotativa.Options.Orientation.Portrait,
PageHeight = 297,
PageWidth = 210
};
return r;
}
Мой контроллер также имеет действие под названием «IndexPrintFormat», которая делает фактический вид я хочу распечатать. Это перечисляет коллекцию заказов и после каждого заказа добавляет P, который использует следующий CSS
.breakhere {
display: block;
clear: both;
page-break-after: always;
}
Р следующим
<p class="breakhere"></p>
Весь вид «IndexPrintFormat» будет примерно следующим образом (вырубать здесь, чтобы добраться до пункта сообщения)
@model <MyViewModelPathGoesHere>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<style>
.breakhere {
display: block;
clear: both;
page-break-after: always;
}
</style>
</head>
<body>
@foreach (var order in Model.Orders)
{
<div>
//display whatever you want to display for each order here
//This causes a new page in the PDF
<p class="breakhere"></p>
</div>
}
</body>
</html>
Я надеюсь, что это поможет кому-то в будущем! :)