【问题标题】:Printing GeckoWebBrowser Control in Vb.net在 Vb.net 中打印 GeckoWebBrowser 控件
【发布时间】:2016-07-25 11:57:52
【问题描述】:

我正在使用 vb.net winform 中的 GeckoWebBrowser 控件,我想将页面内容直接打印到默认打印机。

我找不到和帮助的材料,所以我试图截取页面的屏幕截图并打印,但它在第一页之后就丢失了。 我正在使用MicrosoftPowerPack 库。 下面是我试图打印页面的代码。

    Dim settings As New System.Drawing.Printing.PrinterSettings
    PrintForm1.PrinterSettings = settings
    settings.DefaultPageSettings.Landscape = True
    PrintForm1.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.CompatibleModeFullWindow)

【问题讨论】:

  • 您可以对浏览器进行截图,然后打印出来。如果你想要截图代码我可以给它。
  • 如果你分享会很高兴.. 我做了很多事情。但徒劳无功
  • 我把它写成答案。
  • 但是禁令告诉你。什么..这些实验在两天的任务中完成了..
  • 它不会打印整个页面,而是显示可见页面..

标签: vb.net webbrowser-control gecko


【解决方案1】:

此代码将页面输出到 png 文件:(虽然它的速度很慢,而且它会在程序运行时冻结您的程序。尝试将其放到后台工作人员以避免冻结)

它很慢,因为它保存了非常高分辨率的图像。但这取决于您的网速。

把它放在代码的最顶部:

Imports System.Net
Imports System.Text
Imports System.IO

子是:

Dim logincookie As CookieContainer
Public Sub urltoimage(ByVal url As String, ByVal pth As String)
    Dim postdata As String = "websiteurl=" & url & "&filetype=PNG&source=WEENYSOFT&convert=Convert+Now%21"
    Dim tempCookies As New CookieContainer
    Dim encoding As New UTF8Encoding
    Dim byteData As Byte() = encoding.GetBytes(postdata)
    Dim postReq As HttpWebRequest = DirectCast(WebRequest.Create("http://s2.pdfconvertonline.com/convert/convert-webpage-win.php"), HttpWebRequest)
    postReq.Method = "POST"
    postReq.KeepAlive = True
    postReq.CookieContainer = tempCookies
    postReq.ContentType = "application/x-www-form-urlencoded"
    postReq.Referer = "http://s2.pdfconvertonline.com/convert/convert-webpage-win.php"
    postReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1"
    postReq.ContentLength = byteData.Length
    Dim postreqstream As Stream = postReq.GetRequestStream
    postreqstream.Write(byteData, 0, byteData.Length)
    postreqstream.Close()
    Dim postresponse As HttpWebResponse
    postresponse = DirectCast(postReq.GetResponse, HttpWebResponse)
    tempCookies.Add(postresponse.Cookies)
    logincookie = tempCookies
    Dim postreqreader As New StreamReader(postresponse.GetResponseStream)
    Dim thepage As String = postreqreader.ReadToEnd
    Dim tb As New TextBox
    tb.Text = thepage
    For Each l In tb.Lines
        If l.Contains("pdfconvertonline.com/convert/") AndAlso l.Contains(".png") AndAlso l.Contains("http://") Then
            Dim i As Integer = l.IndexOf("http://")
            Dim f As String = "h" & l.Substring(i + 1, l.IndexOf("""", i + 1) - i - 1).Replace(" ", "")
            My.Computer.Network.DownloadFile(f, pth)
        End If
    Next
End Sub

例如。 urltoimage("www.stackoverflow.com", "C:\Users\user\Desktop\stck.png")

www.stackoverflow.com 替换为您的网站,将C:\Users\user\Desktop\stck.png 替换为您的输出图像路径。

用法:urltoimage(website, path)

附言。谁理解这段代码,你就知道它有多愚蠢:) ..... 但它确实有效!

【讨论】:

  • 如果不起作用,请告诉我您使用的是什么版本的壁虎。
  • 还没有,其实忙于其他任务
  • 我正忙于其他任务..所以明天试试
  • 显然代码看起来没问题,我确实尝试过,但很遗憾这里由于网络安全无法检索结果,但感谢您为我提供了解决问题的新方向。
【解决方案2】:
Public Sub ShowPrintDialog()
    Dim print = Xpcom.QueryInterface(Of nsIWebBrowserPrint)(Me.Window.DomWindow)
    Try
        print.Print(print.GetGlobalPrintSettingsAttribute, Nothing)
    Catch ex As Exception
    End Try
End Sub

这是在 geckofx 中打印的代码。

另一方面,打印预览是另外一回事,到目前为止我无法让它工作。

https://bitbucket.org/geckofx/geckofx-22.0/issues/10/print-preview-now-in-detail

https://bitbucket.org/geckofx/geckofx-18.0/issues/54/print-preview

【讨论】:

    【解决方案3】:

    截图功能是:

    Private Function TakeScreenShot(ByVal Control As Control) As Bitmap
        Dim tmpImg As New Bitmap(Control.Width, Control.Height)
        Using g As Graphics = Graphics.FromImage(tmpImg)
            g.CopyFromScreen(Control.PointToScreen(New Point(0, 0)), New Point(0, 0), New Size(Control.Width, Control.Height))
        End Using
        Return tmpImg
    End Function
    

    用法:TakeScreenShot(WebBroswer1).Save("C:\Users\user1\Desktop\test.png", System.Drawing.Imaging.ImageFormat.Png)

    WebBroswer1 替换为您的GeckoWebBroswer,将C:\Users\user1\Desktop\test.png 替换为您的图像路径。

    然后就可以打印图片了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多