Рейтинг:
2
eddieangel
Вы могли бы просто сделать снимок экрана и соответствующим образом настроить размер изображения? Я нашел это решение в Google с небольшим поиском.
Rectangle bounds = Screen.GetBounds(Point.Empty);
using(Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using(Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
}
bitmap.Save("test.jpg", ImageFormat.Jpeg);
}
Barcelonista Naser
Я не хочу визуализировать представление пользователю, я просто хочу сгенерировать изображение из html, которое никогда не будет визуализировано.
eddieangel
Хорошо. В этот момент ваши возможности определенно ограничены. Как только вы перестанете полагаться на браузер для визуализации вашего HTML-кода, вам придется найти другой движок. Как сказал Ричард выше, если вы не хотите полагаться на сторонний элемент управления, вам придется заново изобрести колесо и заставить его визуализироваться в вашем коде, а затем преобразовать в bmp.
Рейтинг:
19
Richard Deeming
Единственным встроенным вариантом было бы использовать WebBrowser
управление в новом потоке, как описано в этот ответ StackOverflow[^]. Однако, это, вероятно, не будет работать очень хорошо в ASP.NET сайт.
Почему вы так противитесь сторонним инструментам? Например, HTML-рендерер[^] похоже, что он будет делать именно то, что вам нужно, и свободен в использовании. Лицензия[^] тоже выглядит довольно расслабленным.
Barcelonista Naser
Как я могу настроить его для работы с asp.net mvc? Работает ли он с asp.net mvc?
Barcelonista Naser
Нет никакого примера на asp.net mvc
Richard Deeming
Этот пример[^] показывает, как сгенерировать изображение из HTML.
Этот пост в блоге[^] показывает, как визуализировать представление MVC в строку.
Barcelonista Naser
Я не могу разрешить HtmlRender, хотя я установил ядро HTML-рендера с помощью nuget. в чем проблема?
Richard Deeming
Похоже, вам нужно добавить либо HtmlRenderer.WinForms
или HtmlRenderer.WPF
пакет для доступа к этому классу.
Barcelonista Naser
Спасибо за Ваш быстрый ответ, решил его с добавлением пакета winforms nuget. Последний вопрос. Могу ли я передать имя представления вместо раздела html или я должен передать html в нем непосредственно, как здесь.
Image image = HtmlRender.RenderToImage ("имя представления MVC")
Richard Deeming
Нет, потому что библиотека HTML-рендерера ничего об этом не знает. ASP.NET или MVC. Вам нужно будет визуализировать представление в виде строки, как показано в блоге Рика Страла, а затем передать его в RenderToImage
метод.
Barcelonista Naser
Если я визуализирую представление в строку, останется ли тогда внешний вид и ощущения прежними? Извините, что я слишком загружаю вас вопросами, но мне нужно это знать.
Richard Deeming
Я не знаю - я никогда не пользовался этим инструментом.
Я подозреваю, что это, вероятно, будет, но вы вероятно столкнетесь с проблемами со связанными таблицами стилей.
Barcelonista Naser
Спасибо за вашу помощь, я ценю это. Если у меня возникнут проблемы со связанными таблицами стилей, я буду использовать встроенный CSS. :)