protected override async Task <byte[]> CallTheDriver(ActionContext actionContext) { var html = await RenderPageAsString(actionContext); // copied from https://github.com/webgio/Rotativa.AspNetCore/blob/c907afa8c7dd6a565d307901741c336c429fc698/Rotativa.AspNetCore/ViewAsPdf.cs#L147-L151 string baseUrl = string.Format("{0}://{1}", actionContext.HttpContext.Request.Scheme, actionContext.HttpContext.Request.Host); var htmlForWkhtml = Regex.Replace(html.ToString(), "<head>", string.Format("<head><base href=\"{0}\" />", baseUrl), RegexOptions.IgnoreCase); byte[] fileContent = WkhtmltopdfDriver.ConvertHtml(WkhtmlPath, GetConvertOptions(), htmlForWkhtml); return(fileContent); }
protected override byte[] CallTheDriver(ControllerContext context) { // use action name if the view name was not provided string viewName = ViewName; if (string.IsNullOrEmpty(viewName)) { viewName = context.RouteData.GetRequiredString("action"); } ViewEngineResult viewResult = GetView(context, viewName, MasterName); string html = context.GetHtmlFromView(viewResult, viewName, Model); byte[] fileContent = WkhtmltopdfDriver.ConvertHtml(this.WkhtmlPath, this.GetConvertOptions(), html); return(fileContent); }
protected override async Task <byte[]> CallTheDriver(ActionContext context) { // use action name if the view name was not provided string viewName = ViewName; if (string.IsNullOrEmpty(ViewName)) { viewName = ((Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor)context.ActionDescriptor).ActionName; } ViewEngineResult viewResult = GetView(context, viewName, MasterName); var html = new StringBuilder(); ITempDataProvider tempDataProvider = context.HttpContext.RequestServices.GetService(typeof(ITempDataProvider)) as ITempDataProvider; var viewDataDictionary = new ViewDataDictionary( metadataProvider: new EmptyModelMetadataProvider(), modelState: new ModelStateDictionary()) { Model = this.Model }; if (this.ViewData != null) { foreach (var item in this.ViewData) { viewDataDictionary.Add(item); } } using (var output = new StringWriter()) { var view = viewResult.View; var tempDataDictionary = new TempDataDictionary(context.HttpContext, tempDataProvider); var viewContext = new ViewContext( context, viewResult.View, viewDataDictionary, tempDataDictionary, output, new HtmlHelperOptions()); await view.RenderAsync(viewContext); html = output.GetStringBuilder(); } string baseUrl = string.Format("{0}://{1}", context.HttpContext.Request.Scheme, context.HttpContext.Request.Host); var htmlForWkhtml = Regex.Replace(html.ToString(), "<head>", string.Format("<head><base href=\"{0}\" />", baseUrl), RegexOptions.IgnoreCase); byte[] fileContent = WkhtmltopdfDriver.ConvertHtml(this.WkhtmlPath, this.GetConvertOptions(), htmlForWkhtml); return(fileContent); }