WebBrowser.Print()等待打印完成。.NET

6
我正在使用VB.NET中的WebBrowser控件,并调用Print()方法。我使用PDF打印机进行打印,但在调用Print()方法时,它不会立即启动(它会等待整个子程序或块完成运行代码)。
我需要确保我要打印的文件已经完成,并继续处理此文件,因此,我想按需打印并获取操作完成的某些状态。我尝试过使用printDocument和process,但没有成功。
有人有什么想法吗?
2个回答

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

你最好掌握你默认打印机的“printjobscollection”,确保作业计数为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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接