2016-07-25 10 views
0

Я работаю с элементом управления GeckoWebBrowser в winbform vb.net, я хочу распечатать содержимое страницы напрямую на принтер по умолчанию.Печать GeckoWebBrowser Control в Vb.net

Я не мог найти и не помогать материалу, поэтому пытался снять снимок экрана и распечатать его, но он пропустил сразу после первой страницы. Я пользуюсь библиотекой MicrosoftPowerPack. Ниже приведен код, который я пытаюсь распечатать.

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

Вы можете взять скриншот Broswer, а затем распечатать это. Если вы хотите код скриншота, я могу его дать. – BanForFun

+0

Будет приятно, если вы поделитесь. Я многое сделал. Но напрасно – DareDevil

+0

Я написал это как ответ. – BanForFun

ответ

1

Этот код выводит страницу в файл PNG (Althought его медленно и замерзает вашу программу, пока она работает Попробуйте положить его в качестве фона рабочего, чтобы избежать замерзания.)

Это медленно, потому что это экономит очень высокое разрешение изображений. Но это зависит от скорости вашего интернета.

Положи на самом верху кода:

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 

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

Замените www.stackoverflow.com с вами веб-сайт и C:\Users\user\Desktop\stck.png с вами путь выходного изображения.

Использование: urltoimage(website, path)

Ps. Кто бы ни понимал этот код, вы знаете, как это немыслимо :) ..... Но это работает!

+0

Если он не работает скажите мне, какую версию gecko вы используете. – BanForFun

+0

Спасибо .. Я дам ему попробовать .. У кота была ночь, когда мы обсуждали .. – DareDevil

+0

@DareDevil - Это сработало? – BanForFun

0

Функция скриншот:

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 с вашим путем изображения.

Затем вы можете распечатать изображение.

1
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

Смежные вопросы