有没有办法将 ViewResult 或 PartialViewResult 渲染为图像?
我尝试将 ViewResult 作为字符串获取,并且得到了一个包含 html 的字符串,但我需要将该 html 渲染为图像。如果可能的话 - 带样式和图像。
我有一个想法,在服务器上获取此 html 的一些浏览器输出并将结果捕获到图像中,但目前我不知道在实践中如何实现。
如果您有任何想法,请帮忙。
请不要建议任何第三方组件。只需判断标准 .NET 类是否无法做到这一点即可。
谢谢
See 如何使用 WebBrowser 控件呈现图像 http://code.msdn.microsoft.com/windowsdesktop/How-to-render-or-convert-7064e4e2
public class HtmlToBitmapConverter
{
private const int SleepTimeMiliseconds = 5000;
public Bitmap Render(string html, Size size)
{
var browser = CreateBrowser(size);
browser.Navigate("about:blank");
browser.Document.Write(html);
return GetBitmapFromControl(browser, size);
}
public Bitmap Render(Uri uri, Size size)
{
var browser = CreateBrowser(size);
NavigateAndWaitForLoad(browser, uri, 0);
return GetBitmapFromControl(browser, size);
}
public void NavigateAndWaitForLoad(WebBrowser browser, Uri uri, int waitTime)
{
browser.Navigate(uri);
var count = 0;
while (browser.ReadyState != WebBrowserReadyState.Complete)
{
Thread.Sleep(SleepTimeMiliseconds);
Application.DoEvents();
count++;
if (count > waitTime / SleepTimeMiliseconds)
{
break;
}
}
}
private WebBrowser CreateBrowser(Size size)
{
return
new WebBrowser
{
ScrollBarsEnabled = false,
ScriptErrorsSuppressed = true,
Size = size
};
}
private Bitmap GetBitmapFromControl(WebBrowser browser, Size size)
{
var bitmap = new Bitmap(size.Width, size.Height);
NativeMethods.GetImage(browser.Document.DomDocument, bitmap, Color.White);
return bitmap;
}
}
然后就很简单了
var image = new HtmlToBitmapConverter()
.Render(new Uri(urlTextBox.Text), pictureBox.Size);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)