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

时间:2016-06-02 08:33:06

标签: c# asp.net-mvc pdf rotativa

我想通过电子邮件向所有代理发送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?
  3. 注意:将来此视图将存储在数据库中,并将呈现为VirtualPath

2 个答案:

答案 0 :(得分:0)

我解决了!

  

对于view,我使用了绝对路径。
  对于ControllerContext,我将其对象作为控制器的参数传递   我还使用了System.Web.Mvc

谢谢大家!

答案 1 :(得分:0)

听起来像是在ASP.NET MVC项目之外需要Razor渲染,请看一下这个主题的讨论(链接如下)。你仍然需要弄清楚这是否适用于Rotavia,但我会从这开始。

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

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

"当你想使用Razor渲染报告,电子邮件,源代码,HTML或其他任何东西时,该框架会帮助你,在MVC环境之外&#34 ;

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