AR13 WebDesigner_MVC(Core) Custom Report Exports

Posted by: nicolaas.coetzee on 11 September 2019, 11:49 pm EST

    • Post Options:
    • Link

    Posted 11 September 2019, 11:49 pm EST

    In AR11 reporting service it was possible to do a custom report export like this

    MemoryStream m_stream = new MemoryStream();
                try {
                    //assuming this is a proper report. Could also be a PageReport
                    SectionReport rpt = new SectionReport();
                    rpt.Run();
                    PdfExport pdfExport = new PdfExport();
                    pdfExport.Options.OnlyForPrint = true;
                    pdfExport.Export(rpt.Document, m_stream);
                    return Convert.ToBase64String(m_stream.ToArray());
                } catch (Exception ex) {
                    throw new MicroServicesException(log, reportPreviewOptions.CoreURL, reportPreviewOptions.Token, $"Unable to Get PDF Data -> [ExMessage: {ex.Message}]", ex, new object[] { reportPreviewOptions.CoreURL, reportPreviewOptions.ReportID, reportPreviewOptions.Token });
                } finally {
                    log.Info($"END: ExportPDF");
                }
    

    However the Web Designer service uses a different type of report object -“GrapeCity.ActiveReports.PageReportModel.Report”. This object is not compatible with the above mentioned export method.

    What would be the correct way of doing this export in the AR13 Web Designer service?

  • Posted 12 September 2019, 4:39 pm EST

    Hello,

    There is a ReportConverter class in GrapeCity.ActiveReports.Aspnet.Designer.Utilities to handle Report objects.

    You can use the following code;

    
    MemoryStream ms = new MemoryStream(ReportConverter.ToXml(report)); //report is GrapeCity.ActiveReports.PageReportModel.Report object
    ms.Position = 0;
    TextReader tr = new StreamReader(ms);
    PageReport rpt = new PageReport(tr);
    GrapeCity.ActiveReports.Export.Pdf.Page.Settings pdfSetting = new GrapeCity.ActiveReports.Export.Pdf.Page.Settings();
    GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension pdfRenderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();
    GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
    rpt .Document.Render(pdfRenderingExtension, outputProvider, pdfSetting);      
    MemoryStream exportStream = new MemoryStream();
    outputProvider.GetPrimaryStream().OpenStream().CopyTo(exportStream );
    return Convert.ToBase64String(exportStream .ToArray());
    
    

    Note, you must have the following the reference in your project:

    GrapeCity.ActiveReports.Core.Rdl

    GrapeCity.ActiveReports.Document

    GrapeCity.ActiveReports.Core.Rendering

    GrapeCity.ActiveReports.Export.Pdf

    Hope it helps.

    Thanks,

    Mohit

  • Posted 15 September 2019, 6:27 pm EST

    Hi Mohitg

    Thanks for the answer. This has solved my problem.

Need extra support?

Upgrade your support plan and get personal unlimited phone support with our customer engagement team

Learn More

Forum Channels