【问题标题】:Acumatica - Add combined report to email attachmentAcumatica - 将合并报告添加到电子邮件附件
【发布时间】:2021-09-15 01:54:14
【问题描述】:

我目前正在尝试通过通知活动将合并报告添加到电子邮件附件中。我目前已经通过一个标准报告实现了这样的功能,该报告没有使用堆栈溢出问题的帮助:How do we attach report PDF/Excel file when i click on custom action on Sales order screen using Acumatica code

但是,我似乎需要将组合报告转换为字节数组才能使用 sender.AddAttatchment()。我试过像这样生成两个报告,并将它们连接在一起形成一个字节数组,但它只会显示加载的最后一个报告:

            //Load First Report
            PX.Reports.Controls.Report _report = PXReportTools.LoadReport("AR010000", null);
            PXReportTools.InitReportParameters(_report, parameters,
                    SettingsProvider.Instance.Default);
            PX.Reports.Data.ReportNode reportNode = PX.Reports.Data.ReportProcessor.ProcessReport(_report);

            //Create Byte Array From First report
            byte[] first = PX.Reports.Mail.Message.GenerateReport(reportNode,
                 ReportProcessor.FilterPdf).First();

            //Load Second Report
            PX.Reports.Controls.Report _report2 = PXReportTools.LoadReport("AR010000", null);
            PXReportTools.InitReportParameters(_report2, parameters,
                    SettingsProvider.Instance.Default);
            PX.Reports.Data.ReportNode reportNode2 = PX.Reports.Data.ReportProcessor.ProcessReport(_report2);

            //Create Byte Array From Second Report
            byte[] second = PX.Reports.Mail.Message.GenerateReport(reportNode2,
                 ReportProcessor.FilterPdf).First();

            //Concat Both Byte Arrays

            byte[] finalReport = new byte[first.Length + second.Length];
            Buffer.BlockCopy(first, 0, finalReport, 0, first.Length);
            Buffer.BlockCopy(second, 0, finalReport, first.Length, second.Length);

            //Attatch The Reports To The Email
            sender.AddAttachment("Combined Report.pdf", finalReport.ToArray());

通常,要创建一个组合报告,我会使用这段代码:

 //Generate Combined Report 
            PXReportRequiredException combineReport = PXReportRequiredException.CombineReport(null, "AP010000", new Dictionary<string, string>(), false);

            //Convert Combined Report To Byte Array
            byte[] report = PX.Reports.Mail.Message.GenerateReport(combineReport,
                 ReportProcessor.FilterPdf).First();

但是,我不确定如何将其转换为字节数组,因为它不适用于此代码,因为我收到错误

Unable to cast object of type 'PX.Data.PXReportRequiredException' to type 'PX.Reports.Data.ReportNode'.

有没有人知道我该如何解决这个问题,或者如果有一些程序集引用我可以使用类似于用于将非组合报告转换为字节数组的程序集引用,它使用 PXReportRequiredException?

谢谢大家

【问题讨论】:

    标签: c# arrays asp.net acumatica


    【解决方案1】:

    不幸的是,连接字节数组不会达到你想要的效果。您需要找到第 3 方库,当我需要这样做时,我使用了 PDFSharp。看这里

    Combining multiple PDFs using PDFSharp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      相关资源
      最近更新 更多