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