C#MVC 5将html视图转换为PDF以在业务层发送电子邮件附件

C#MVC 5将html视图转换为PDF以在业务层发送电子邮件附件,c#,asp.net-mvc,pdf,rotativa,C#,Asp.net Mvc,Pdf,Rotativa,我想通过电子邮件向所有代理发送PDF销售报告,并且需要为每个代理动态生成此PDF。我使用了ItextSharp,但这需要太多的html代码。最后我登陆了Rotativa,它运行得很好,但几乎有几千个代理,我有一个单独的业务层来做这项工作。如何使Rotativa在业务层工作 var pdfResult = new ViewAsPdf("CreateIMDStatmentReport", _IReportManagement.GetIMDStatmentReportByIMDCode(imdCod

我想通过电子邮件向所有代理发送PDF销售报告,并且需要为每个代理动态生成此PDF。我使用了
ItextSharp
,但这需要太多的html代码。最后我登陆了Rotativa,它运行得很好,但几乎有几千个代理,我有一个单独的业务层来做这项工作。如何使Rotativa在业务层工作

 var pdfResult = new ViewAsPdf("CreateIMDStatmentReport", _IReportManagement.GetIMDStatmentReportByIMDCode(imdCode));
 var binary = pdfResult.BuildPdf(this.ControllerContext);     
 System.Net.Mail.Attachment data = new Attachment(new MemoryStream(binary), MediaTypeNames.Application.Pdf);
  • 如何在单独的业务层中获取视图
  • 我如何处理ControllerContext
  • 注意:将来,此视图将存储在数据库中,并将作为VirtualPath呈现

    我解决了它

    对于
    视图
    我使用了绝对路径
    对于
    ControllerContext
    ,我将其对象作为参数从controller传递过来。
    我还使用了
    System.Web.Mvc


    谢谢大家

    听起来您需要在ASP.NET MVC项目之外进行Razor渲染,请查看关于此主题的讨论(下面的链接)。你仍然需要弄清楚这是否适用于罗塔维亚,但我会从这开始

    从讨论中可以看出,下面的框架是针对您的场景,但我不能再次确认它是否能与Rotavia一起工作,也许您可以使用另一个HTML到PDF转换器组件

    “当您想在MVC环境之外使用Razor呈现报告、电子邮件、源代码、HTML或其他任何内容时,该框架将为您提供帮助。”


    Ty@曼弗雷德维默编辑它!好吧,我看你解决了。无论如何,我会留下一个答案,作为大家讨论的另一个选择。谢谢!回复@EDP。