Rendu HTML ViewResult ASP.NET MVC en tant qu’image sans composants tiers

Existe-t-il un moyen de rendre ViewResult ou PartialViewResult sous forme d’image?

J’ai essayé d’obtenir ViewResult sous forme de chaîne et une chaîne contenant le code HTML comme il se doit, mais je dois rendre ce code HTML en image. Si c’est possible – avec des styles et des images.

J’ai une idée pour obtenir une sortie du navigateur pour ce code HTML sur le serveur et capturer le résultat sur une image, mais comment cela peut-il être fait dans la pratique, je ne le sais pas pour le moment. Si vous avez des idées, s’il vous plaît, aidez-nous.

Veuillez ne suggérer aucun composant tiers. Dites simplement s’il est impossible de le faire avec des classes .NET standart.

Je vous remercie

Voir Comment rendre une image à l’aide du contrôle WebBrowser

public class HtmlToBitmapConverter { private const int SleepTimeMiliseconds = 5000; public Bitmap Render(ssortingng 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; } } 

Alors c’est aussi simple que

 var image = new HtmlToBitmapConverter() .Render(new Uri(urlTextBox.Text), pictureBox.Size); 

Désolé pour ma suggestion précédente. Ce n’était pas correct, vraiment. Maintenant je comprends ce que tu veux. Mais si vous n’aimez pas l’idée d’utiliser les solutions tierces, le seul moyen est d’écrire votre propre parsingur et ce n’est pas une tâche facile. Ou vous pouvez essayer d’utiliser la classe WebBrowser et sa méthode DrawToBitmap comme décrit ici http://englestone.blogspot.com/2009/06/generate-screenshot-previews-with-c.html