Update
- 08.15.2007 - user defined image formats, save path, base file name, text overlay/watermark, and screen res guidelines... and some other ideas to implement.
Introduction
I have seen other articles that describe how to accomplish this, but had no luck in getting any to work with Internet Explorer 7. This is a simple example that captures a webpage, inlcuding elements below the fold, and saves it as an image. Here is what to expect:
Note that this has been resized, captured images are actual size.
Using the code
This example includes only the basics. Images are saved as PNG's in the same directory as the exe. Saving as a different image format, variable pausing, and given filename should be relatively easy to add.
Collapse | Copy Code Private Sub GetImage()
If WebBrowser1.Document Is Nothing Then
Return
End If
Try
Dim scrollWidth As Integer
Dim scrollHeight As Integer
scrollHeight = WebBrowser1.Document.Body.ScrollRectangle.Height
scrollWidth = WebBrowser1.Document.Body.ScrollRectangle.Width
WebBrowser1.Size = New Size(scrollWidth, scrollHeight)
Dim bm As New Bitmap(scrollWidth, scrollHeight)
WebBrowser1.DrawToBitmap(bm, New Rectangle(0, 0, bm.Width, bm.Height))
Dim SaveAsName As String
SaveAsName = Regex.Replace(textWebURL.Text, "(\\|\/|\:|\*|\?|\""|\<|\>|\|)?", "")
bm.Save(SaveAsName & ".png", System.Drawing.Imaging.ImageFormat.Png)
bm.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
End Try
buttonCapture.Enabled = True
End Sub
Points of Interest
Waiting a second or two after the document has loaded will allow that much more of the client-side animation / js / etc. to be captured. If the web page is saved as a "white" image, try the above.
Environment
Vista / VS2005