Посмотрите на приведенный ниже код:
Прежде всего, нет необходимости сохранять HTML как физический файл, вы можете просто вызвать средство рендеринга бритвы из вашего контроллера, например, такas для возврата окончательного строкового ответа.
public string RenderRazorViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
Затем вы можете передать этот ответ вашему экспортеру, чтобы он мог вернуть вам файл PDF, который позже вы вернете непосредственно клиенту
string htmlContent = RenderRazorViewToString("SomeViewDefinedAsPartial", ReportModel);
//// fetch view's pdf styles
string CSSContent = "";
var byteRslt = PDFExporter.ConvertToPDF(htmlContent, CSSContent);
Важно: средства визуализации HTML в PDF обычно недостаточно хорошо работают с динамическими страницами, для инициализации которых требуется javascript, но я надеюсь, что этот ответ поможет вам продвинуться вперед в выполнении ваших требований / реализации.