我目前正在做一个项目,我需要创建一个可以导出为 pdf 的“仪表板”。我想使用 Rotativa,但由于我们的应用程序使用 .NET 框架 4.0,这是不可能的。所以我找到了 NReco PdfGenerator。
现在这就是我如何创建 PDF 结果的代码:
var ViewAsString = RenderViewAsString("~/Views/QMetrics/StandardDashboard.cshtml", viewModel);
var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
htmlToPdf.PageWidth = 1600;
htmlToPdf.PageHeight = 900;
var pdfBytes = htmlToPdf.GeneratePdf(ViewAsString);
FileResult FileResult = new FileContentResult(pdfBytes, "application/pdf");
FileResult.FileDownloadName = "Dashboard-" + viewModel.ProjectName + "-" +
DateTime.Now.ToString() + "-.pdf";
return FileResult;
它成功地创建了包含来自后端的所有内容(项目信息等)的 PDF 页面,但该页面看起来非常难看。在原始页面上,我有 2 列,而在 PDF 页面上,它将所有内容都放在一列中。我尝试了几种不同的页面大小,并将布局更改为无响应,但没有任何变化。
我的第一个建议是创建 PDF 时不包含引用的 CSS 和 JS 文件,因此我复制了来自外部文件(bootstrap、Chart.js)的所有内容并将其直接粘贴到 .cshtml 文件中。但什么都没有改变。我的图表未呈现/加载,缺少的 CSS 内容仍然不存在。
在 NReco PDFGenerator 网站上,他们说它支持复杂的 CSS 代码和 javascript 代码,所以我真的不明白为什么这不起作用。
这里有没有人使用过 NReco,或者有人可以推荐其他适用于 .NET 4.0 的东西吗?
守候你守候我
相关分类