Используйте HtmlRenderer для создания изображения с помощью скриптов - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь использовать TheArtOfDev.HtmlRenderer в моем проекте. NET 4.6 WebAPI для создания изображения некоторого HTML, которое у меня есть.

private static string GetBase64FromHtml(string htmlString)
{
    var image = HtmlRender.RenderToImage(htmlString);
    string imageString = "";
    using (MemoryStream m = new MemoryStream())
    {
        image.Save(m, ImageFormat.Png);
        byte[] imageBytes = m.ToArray();
        image.Dispose();
        imageString = Convert.ToBase64String(imageBytes);
    }
    return imageString;
}

Пример HTML

<html>
<head>
    <script src="https://code.highcharts.com/highcharts.js"></script>
    <script src="https://code.highcharts.com/modules/exporting.js"></script>
    <script src="https://code.highcharts.com/modules/export-data.js"></script>
    <script src="https://code.highcharts.com/modules/accessibility.js"></script>
</head>
<body>
    <figure class="highcharts-figure">
       <div id="chartContainer"></div>
    </figure>
    <script>
        Highcharts.chart('chartContainer', {
            chart: {
                type: 'pie'
            },
            series: [{
                innerSize: '80%',
                data: [{'name':'test','y':'100'}]
            }]
        })
    </script>
</body>
</html>

Проблема, с которой я сталкиваюсь, заключается в том, что мой html включает скрипты для диаграмм, которые необходимо отрендерить, прежде чем я фактически сделаю изображение. В настоящее время метод HtmlRender.RenderToImage возвращает пустое изображение, потому что он принимает HTML как есть до завершения финальной визуализации.

Есть ли способ заставить HtmlRender ждать секунду или два перед тем, как сделать снимок? Другой вариант - переключиться на Phantom JS, но я хотел проверить, можно ли его спасти, прежде чем двигаться дальше.

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