我正在使用ExpertPDF的Html-to-PDF转换工具来完成这个问题(尽管如果有足够的文档,我也可以考虑其他库)。
简而言之,我有一个以特定方式格式化的视图,并希望将其呈现为用户可以保存到磁盘的PDF文档。
到目前为止,我已经拥有了一个PrintService(它实现了IPrintService接口),这个实现有两个PrintToPDF()重载方法,一个只需要URL,另一个需要HTML字符串,两者都返回byte[]。 我只解决了需要HTML字符串的第二个重载的细节。
我想从我的控制器中做的是:
public FileStreamResult Print(int id)
{
var model = _CustomRepository.Get(id);
string renderedView = SomethingThatRendersMyViewAsAString(model);
Stream byteStream = _PrintService.PrintToPdf(renderedView);
HttpContext.Response.AddHeader("content-disposition",
"attachment; filename=report.pdf");
return new FileStreamResult(byteStream, "application/pdf");
}
理论上可以将PDF呈现在页面中,但我需要帮助的是"SomethingThatRendersMyViewAsAString"。是否有一种快速获取View字符串表示形式的方法?或者我应该坚持使用URL重载,并将URL传递给View...还有其他想法吗?
谢谢!