我在VB.NET中使用WebBrowser控件并调用Print()方法。我正在使用PDF打印机进行打印,并且当调用Print()时,它不会立即启动(等待它完成运行整个Sub或块的代码。
我需要确保我正在打印的文件是完整的并继续处理这个文件,因此,我想按需打印并获得操作完成时的状态。我已经尝试过使用printDocument并且没有运气处理。
有人有什么想法吗?
答案 0 :(得分:5)
查看基础非托管WebBrowser对象的PrintTemplateTeardown
事件。有时候这个事件会多次被触发,但希望这会指向正确的方向。您需要添加对Microsoft Internet Controls
的引用。
Private Sub Print()
AddHandler DirectCast(WebBrowser1.ActiveXInstance, SHDocVw.WebBrowser).PrintTemplateTeardown, AddressOf PrintDone
WebBrowser1.Print()
End Sub
Private Sub PrintDone(ByVal obj As Object)
Trace.WriteLine("printed")
RemoveHandler DirectCast(WebBrowser1.ActiveXInstance, SHDocVw.WebBrowser).PrintTemplateTeardown, AddressOf PrintDone
End Sub
答案 1 :(得分:1)
您最好的办法是为您的默认打印机处理'printjobscollection',并确保jobcount = 0
在vb.net中这样:
Dim intprint As Integer = Nothing
retry2:
intprint = GetPrintJobsCollection(printerinuse)
If Not intprint = 0 Then
System.Threading.Thread.Sleep(1000)
GoTo retry2
End If
'do what you want to do after print completes here