Here is another option, use print screens (although it doesn't care about scrolling, I think you can do it). This example can be expanded to meet the needs of your business, although this is a hacky look. You pass it the url that creates the image.
Name it
protected void Page_Load(object sender, EventArgs e) { int screenWidth = Convert.ToInt32(Request["ScreenWidth"]); int screenHeight = Convert.ToInt32(Request["ScreenHeight"]); string url = Request["Url"].ToString(); string bitmapName = Request["BitmapName"].ToString(); WebURLToImage webUrlToImage = new WebURLToImage() { Url = url, BrowserHeight = screenHeight, BrowserWidth = screenWidth, ImageHeight = 0, ImageWidth = 0 }; webUrlToImage.GenerateBitmapForUrl(); webUrlToImage.GeneratedImage.Save(Server.MapPath("~") + @"Images\" +bitmapName + ".bmp"); }
Create an image from a web page.
using System; using System.Drawing; using System.Windows.Forms; using System.Threading; using System.IO; public class WebURLToImage { public string Url { get; set; } public Bitmap GeneratedImage { get; private set; } public int ImageWidth { get; set; } public int ImageHeight { get; set; } public int BrowserWidth { get; set; } public int BrowserHeight { get; set; } public Bitmap GenerateBitmapForUrl() { ThreadStart threadStart = new ThreadStart(ImageGenerator); Thread thread = new Thread(threadStart); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); return GeneratedImage; } private void ImageGenerator() { WebBrowser webBrowser = new WebBrowser(); webBrowser.ScrollBarsEnabled = false; webBrowser.Navigate(Url); webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); while (webBrowser.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); webBrowser.Dispose(); } void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { WebBrowser webBrowser = (WebBrowser)sender; webBrowser.ClientSize = new Size(BrowserWidth, this.BrowserHeight); webBrowser.ScrollBarsEnabled = false; GeneratedImage = new Bitmap(webBrowser.Bounds.Width, webBrowser.Bounds.Height); webBrowser.BringToFront(); webBrowser.DrawToBitmap(GeneratedImage, webBrowser.Bounds); if (ImageHeight != 0 && ImageWidth != 0) GeneratedImage = (Bitmap)GeneratedImage.GetThumbnailImage(ImageWidth, ImageHeight, null, IntPtr.Zero); } }
source share