将ASP.NET MVC ViewResult HTML呈现为没有第三方组件的图像

有没有办法将ViewResult或PartialViewResult渲染为图像?

我试图将ViewResult作为字符串,我得到了一个包含html的字符串,但我需要将该html渲染为图像。 如果可能 – 使用样式和图像。

我有一个想法是在服务器上为这个html获取一些浏览器输出并将结果捕获到图像,但是如何在实践中完成我目前还不知道。 如果您有任何想法,请帮助。

请不要建议任何第三方组件。 只需告诉标准.NET类是否无法做到这一点。

谢谢

请参见如何使用WebBrowser控件呈现图像

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); 

对不起我之前的建议。 真的,这不对。 现在我明白你想要什么。 但是如果你不喜欢使用第三方解决方案的想法,唯一的办法就是编写自己的解析器,这不是一件容易的事。 或者您可以尝试使用WebBrowser类及其方法DrawToBitmap如何在此处描述http://englestone.blogspot.com/2009/06/generate-screenshot-previews-with-c.html