Сохранить вид как HTML-файл после рендеринга - PullRequest
0 голосов
/ 01 октября 2019

Можно ли сохранить визуализированный вид в виде файла html?

Мне нужно сохранить вид в виде "Testfile.html" после визуализации Razor и javascript. Возможно ли это?

Что я пытаюсь сделать, это взять сохраненный вид, который включает в себя холст, созданный с помощью chart.js, и сохранить их в виде HTML-файла. После этого я хочу конвертировать HTML-файл в PDF, используя iText7

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Вы можете напрямую преобразовать View в pdf-файл, используя wkhtmltopdf

. Wkhtmltopdf должен быть установлен на сервере, и его путь используется в web.config, отсюда код c # будет использовать этот путь ипреобразовать его в файл PDF.

0 голосов
/ 01 октября 2019

Посмотрите на приведенный ниже код:

Прежде всего, нет необходимости сохранять 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, но я надеюсь, что этот ответ поможет вам продвинуться вперед в выполнении ваших требований / реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...