C# 使用Rotativa从多个视图生成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

我想使用2个视图生成一个pdf。我的目标是从第一个视图生成第一个页面,从第二个视图生成第二个页面

这是我当前的代码:

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吗?