ASP.NET - 捕获屏幕截图

时间:2012-02-13 20:53:27

标签: asp.net

我正在考虑使用WebBrowser对象来创建用户访问过的页面的屏幕截图(通过捕获URL)。课程的一部分看起来像下面的内容。这是一个内部应用程序,原因是允许用户查看动态页面在几个月前访问时的状态。

Public Function ConvertPage(ByVal PageUrl As String) As Bitmap
        Me.PageUrl = PageUrl
        Dim thrCurrent As New Thread(New ThreadStart(AddressOf CreateImage))
        thrCurrent.SetApartmentState(ApartmentState.STA)
        thrCurrent.Start()
        thrCurrent.Join()
        CreateImage()
        Return ConvertedImage
    End Function
Private Sub CreateImage()

    Dim BrowsePage As New WebBrowser()
    BrowsePage.ScrollBarsEnabled = False
    BrowsePage.Navigate(PageUrl)
    AddHandler BrowsePage.DocumentCompleted, AddressOf _
WebBrowser_DocumentCompleted

    While BrowsePage.ReadyState <> WebBrowserReadyState.Complete
        Application.DoEvents()
    End While
    BrowsePage.Dispose()
End Sub

今天早些时候,我正在阅读一个条目(我认为它就在这里)并且回答者建议提问者避免这种方法。我没有这篇文章的链接。这是一个糟糕的apprach bin您的视图,即在ASP.NET页面中使用WebBrowser对象?

1 个答案:

答案 0 :(得分:1)

我认为这是你追求的链接。
problem using winforms WebBrowser in asp.net

这个代码项目页面似乎有一个解决方案,并谈论它的优点 http://www.codeproject.com/Articles/50544/Using-the-WebBrowser-Control-in-ASP-NET

他的解决方案似乎需要三个线程来使用控件;

或许更好的选择是采用通过Javascript,然后通过ajax调用发回信息,看看这个Javascript库,它做到了 http://html2canvas.hertzen.com/

如果你要使用webbrowser方法,那么这个问题的底部是用于捕获图像的c#代码

Take a screenshot of a webpage with JavaScript?