Screenshot einer kompletten Webseite machen in C#

Screenshots machen ist eine Sache. Ein Klick auf die “Druck”-Taste (auf den meisten Tastaturen rechts neben F12), oder ein Aufruf der kürzlich von mir vorgestellten C# Methode, genügt. Was aber wenn man eine komplette Webseite festhalten will? Die meisten Seiten sind so lang, dass ein Scrollen, um den kompletten Inhalt zu sehen, unabdingbar ist.
Um auch in solchen Situationen einen vollständigen Screenshot erstellen zu können, hilft das nachfolgende Snippet.

 

 private void WebsiteScreenshot(string url, string file)
 {
     //Anlegen eines Webbrowser Objekts
     WebBrowser browser = new WebBrowser();

     //Scrollbars deaktivieren, damit sie nicht auf dem
     //Screenshot auftauchen
     browser.ScrollBarsEnabled = false;

     //(Java-)Scriptfehlermeldungen unterdrücken
     browser.ScriptErrorsSuppressed = true;

     //Die gewünschte Seite aufrufen
     browser.Navigate(new Uri(url));

     //Warten bis die Seite vollständig geladen und gerendert wurde
     while (browser.Document == null || browser.Document.Body == null)
            Application.DoEvents();

      //Abmessungen der kompletten Webseite ermitteln und auf das
      //Webbrowser Objekt übertragen
      Rectangle websiteSize = browser.Document.Body.ScrollRectangle;
      browser.Size = new Size(websiteSize.Width,websiteSize.Height);

      //Ein Bitma Objekt mit den Maßen der Webseite anlegen.
      Bitmap bmp = new Bitmap(websiteSize.Width, websiteSize.Height);

      //Die gerenderte Webseite auf das Bitmap Objekt zeichnen
      browser.DrawToBitmap(bmp,
           new Rectangle(0, 0, websiteSize.Width, websiteSize.Height));

      browser.Dispose();

      //Das Bitmap Objekt als Datei speichern
      bmp.Save(file, ImageFormat.Png);
 }

//Snippet von www.code-bude.net

Aufrufen könnt ihr die Methode dann wie folgt:

   //Solltet ihr eine andere Dateiendung angeben, denkt daran, den
   //ImageFormat-Typ in der Hauptmethode zu ändern!
   WebsiteScreenshot("http://code-bude.net/", "c:\\website_screenshot.png");

   //Snippet von www.code-bude.net

Sollten ihr noch Fragen oder Anregungen haben, gilt wie immer: Einfach einen Kommentar hinterlassen!
Viele Grüße,
Raffi

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.