C# 使用Rotativa从多个视图生成pdf?
我想使用2个视图生成一个pdf。我的目标是从第一个视图生成第一个页面,从第二个视图生成第二个页面 这是我当前的代码:C# 使用Rotativa从多个视图生成pdf?,c#,asp.net-mvc,rotativa,C#,Asp.net Mvc,Rotativa,我想使用2个视图生成一个pdf。我的目标是从第一个视图生成第一个页面,从第二个视图生成第二个页面 这是我当前的代码: var actionPDF = new Rotativa.ActionAsPdf("DownloadDividendSummaryPdf", new { ReportType = DividendType, Time = DividendTime }) { FileName = "DividendPortfo
var actionPDF = new Rotativa.ActionAsPdf("DownloadDividendSummaryPdf", new { ReportType = DividendType, Time = DividendTime })
{
FileName = "DividendPortfolio" + email + ".pdf",
PageSize = Size.A4,
MinimumFontSize = 12,
//PageMargins = new Margins(3, 3, 3, 3),
IsGrayScale = true,
IsJavaScriptDisabled = true,
IsBackgroundDisabled = true,
};
actionPDF = new Rotativa.ActionAsPdf("DownloadDividendDetailedPdf", new { ReportType = DividendType, Time = DividendTime, StartDate = G_StartDate, todate = G_ToDate })
{
FileName = "DividendPortfolio" + email + ".pdf",
PageSize = Size.A4,
MinimumFontSize = 12,
//PageMargins = new Margins(3, 3, 3, 3),
IsGrayScale = true,
IsJavaScriptDisabled = true,
IsBackgroundDisabled = true,
};
可以合并PDF(不是简单的),也可以创建一个视图来呈现其他两个视图的输出,然后将该视图呈现为PDF。您需要将生成的字节数组合并为一个 以下是简化设置:
//Create single views
ViewAsPdf view = new ViewAsPdf("ViewName", viewModel);
byte[] viewData = view.BuildFile(ControllerContext);
//Add them to array
List<byte[]> viewDatas = new List<byte[]>();
viewDatas.Add(viewData);
//Combine them
byte[] combinedViewData = combineViewData(viewDatas);
//创建单个视图
ViewAsPdf view=新ViewAsPdf(“ViewName”,viewModel);
字节[]viewData=view.BuildFile(ControllerContext);
//将它们添加到数组中
List viewDatas=新列表();
添加(viewData);
//把它们结合起来
字节[]组合视图数据=组合视图数据(视图数据);
以下是combineViewData帮助器方法:
private static byte[] combineViewData(List<byte[]> viewData)
{
byte[] combinedViewData = null;
using (MemoryStream ms = new MemoryStream())
{
using (Document document = new Document())
{
using (PdfCopy copy = new PdfCopy(document, ms))
{
document.Open();
foreach (byte[] arr in viewData)
{
using (MemoryStream viewStream = new MemoryStream(arr))
{
using (PdfReader reader = new PdfReader(viewStream))
{
int n = reader.NumberOfPages;
for (int page = 0; page < n;)
{
copy.AddPage(copy.GetImportedPage(reader, ++page));
}
}
}
}
}
}
combinedViewData = ms.ToArray();
}
return combinedViewData;
}
专用静态字节[]组合EWDATA(列表视图数据)
{
字节[]combinedViewData=null;
使用(MemoryStream ms=new MemoryStream())
{
使用(文档=新文档())
{
使用(PdfCopy副本=新PdfCopy(文档,ms))
{
document.Open();
foreach(viewData中的字节[]arr)
{
使用(MemoryStream viewStream=新的MemoryStream(arr))
{
使用(PDF阅读器=新PDF阅读器(viewStream))
{
int n=reader.NumberOfPages;
对于(int page=0;page
PDFCopy
是Rotativa吗?