W zeszłym tygodniu pracowałem nad podobną funkcją w moim projekcie, przeczytałem kilka postów na ten temat, w tym również linki. Chciałbym podzielić się swoim doświadczeniem:
Kluczową częścią tej funkcji jest metoda System.Windows.Forms.WebBrowser.DrawToBitmap.
ale jego obsługiwane i nie robi praca
jest obsługiwane i działa, ale nie zawsze działa poprawnie. W niektórych okolicznościach dostaniesz zrzut ekranu z pustym obrazem (z mojego doświadczenia wynika, że bardziej złożony HTML ładuje się, tym bardziej możliwe, że się nie uda W moim projekcie tylko bardzo proste i dobrze sformatowane htmle zostaną załadowane do formantu WebBrowser, więc nigdy nie dostanę puste obrazy).
W każdym razie nie mam również w 100% idealnego rozwiązania. Oto część mojego podstawowego kodu i mam nadzieję, że to pomaga (działa na ASP.NET MVC 3).
using (var browser = new System.Windows.Forms.WebBrowser())
{
browser.DocumentCompleted += delegate
{
using (var pic = new Bitmap(browser.Width, browser.Height))
{
browser.DrawToBitmap(pic, new Rectangle(0, 0, pic.Width, pic.Height));
pic.Save(imagePath);
}
};
browser.Navigate(Server.MapPath("~") + htmlPath); //a file or a url
browser.ScrollBarsEnabled = false;
while (browser.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
}
}
Jeśli masz na myśli wątki SO, to co z linkami do nich i wyjaśnienie, dlaczego każdy z nich nie zadziałał –
tam jesteś Matt. btw czy znasz odpowiedź? – user1873073
@ user1873073 proszę opublikuj część swojego kodu. szczególnie w przypadku ładowania dokumentu i zdarzenia ukończonego dokumentu. – scartag