正如标题所示,我正在寻找一种将.NET MVC视图导出为PDF的方法。
我的程序是这样的:
第1页 收集信息
第2页 获取此信息并使用CSS等对其进行大量设计
所以基本上我需要在处理完第2页并使用来自Page 1模型的信息后保存第2页。
提前致谢!
答案 0 :(得分:1)
要将非静态页面呈现为pdf,您需要使用ViewModel将页面呈现为字符串,然后转换为pdf:
首先,在静态类中创建一个方法RenderViewToString,可以在Controller中引用:
public static class StringUtilities
{
public static string RenderViewToString(ControllerContext context, string viewPath, object model = null, bool partial = false)
{
// first find the ViewEngine for this view
ViewEngineResult viewEngineResult = null;
if (partial)
{
viewEngineResult = ViewEngines.Engines.FindPartialView(context, viewPath);
}
else
{
viewEngineResult = ViewEngines.Engines.FindView(context, viewPath, null);
}
if (viewEngineResult == null)
{
throw new FileNotFoundException("View cannot be found.");
}
// get the view and attach the model to view data
var view = viewEngineResult.View;
context.Controller.ViewData.Model = model;
string result = null;
using (var sw = new StringWriter())
{
var ctx = new ViewContext(context, view, context.Controller.ViewData, context.Controller.TempData, sw);
view.Render(ctx, sw);
result = sw.ToString();
}
return result.Trim();
}
}
然后,在您的控制器中:
var viewModel = new YourViewModelName
{
// Assign ViewModel values
}
// Render the View to a string using the Method defined above
var viewToString = StringUtilities.RenderViewToString(ControllerContext, "~/Views/PathToView/ViewToRender.cshtml", viewModel, true);
然后,您可以使用ViewModel生成的视图作为可以使用其中一个库转换为pdf的字符串。
希望它有所帮助,或至少让你在路上。