To take a screenshot is one thing. One click on the print key or a small program, which uses the c# screenshot capture method, I showed you the last time, are enough to take a beautiful screenshot.
But what should you do, if you want to capture a whole website? The most websites are “longer” as your screen is high. Thereby most common ways to capture a screenshot will become useless.
But don’t fear – C# can of course solve this problem. If you want to capture a screenshot of a complete website, take a look at the following snippet.
private void WebsiteScreenshot(string url, string file) { //Create a webbrwoser object WebBrowser browser = new WebBrowser(); //Deactivate scrollbars, unless you want them to //appear on your screenshot browser.ScrollBarsEnabled = false; //Suppress (java-)script error popups browser.ScriptErrorsSuppressed = true; //Open the given url in webbrowser browser.Navigate(new Uri(url)); //Wait until the page is fully loaded while (browser.Document == null || browser.Document.Body == null) Application.DoEvents(); //Resize the webbrowser object to the same size as the //webpage Rectangle websiteSize = browser.Document.Body.ScrollRectangle; browser.Size = new Size(websiteSize.Width,websiteSize.Height); //Create a bitmap object with the same dimensions as the website Bitmap bmp = new Bitmap(websiteSize.Width, websiteSize.Height); //Paint the website contents to the bitmap browser.DrawToBitmap(bmp, new Rectangle(0, 0, websiteSize.Width, websiteSize.Height)); browser.Dispose(); //Save the bitmap at the given filepath bmp.Save(file, ImageFormat.Png); }
You can then call the method as follows:
//If you want file extension than .png, don't forget to change the //ImageFormat-type in the above main function! WebsiteScreenshot("http://en.code-bude.net/", "c:\website_screenshot.png");
As always, if you have questions, write me a comment!
antoniamclamb@web.de
Hi,
Great post, I have done something similar… but am facing some challenges with websites that are responsive using max-width.
Those websites are causing the width and height to be incorrect.
Have you experience anything similar and have any solutions for?