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

C# MVC 5 Converting html view to PDF to send an email attachment in Bussness Layer

我想通过电子邮件将 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);
  1. 如何在单独的业务层中获取视图?
  2. 如何处理ControllerContext?

注意:将来此视图将存储在数据库中,并将呈现为 VirtualPath

我解决了!

For the view I used the absolute paths.
And for the ControllerContext ,I passed its object as a parameter from controller.
Also I used System.Web.Mvc package

谢谢大家!

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

Is it possible to use Razor View Engine outside asp.net

根据讨论,以下框架正在解决您的问题,但我再次无法确认它是否适用于 Rotavia,也许您可​​以使用另一个 HTML-to-PDF 转换器组件。

"The framework helps you when you want to use Razor to render reports, e-mails, source code, HTML, or whatever, outside the MVC environment"

http://www.codeproject.com/Articles/423141/Razor-2-0-template-engine-supporting-layouts