VB.Net将表单打印到PDF打印机

VB.Net将表单打印到PDF打印机,vb.net,pdf,printing,Vb.net,Pdf,Printing,我正在尝试(但失败)在VB.Net中将Windows窗体打印为PDF文件 现在,通过一些研究,我知道VB.Net没有任何内置函数,不需要使用第三方应用程序就可以实现这一点 我解决这个问题的方法是尝试使用PDF打印机打印我的表单,因为从逻辑上讲,这应该不起作用?我的问题是让它正常工作 这是我当前尝试打印的代码: Private Sub SelectPrinterThenPrint() Dim PrintersDialog As New PrintDialog() If Printe

我正在尝试(但失败)在VB.Net中将Windows窗体打印为PDF文件

现在,通过一些研究,我知道VB.Net没有任何内置函数,不需要使用第三方应用程序就可以实现这一点

我解决这个问题的方法是尝试使用PDF打印机打印我的表单,因为从逻辑上讲,这应该不起作用?我的问题是让它正常工作

这是我当前尝试打印的代码:

Private Sub SelectPrinterThenPrint()
    Dim PrintersDialog As New PrintDialog()
    If PrintersDialog.SHowDialog(Me) = System.Forms.DialogResult.OK Then
        Try
            p_Document = New PrintDocument()
            PrintersDialog.Document = p_Document
            AddHandler p_Document.PrintPage, AddressOf HandleOnPrintPage
        Catch ex As Exception

        End Try
    End If
End Sub

Private Sub HandleOnPrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Handles p_Document.PrintPage
    Dim MorePagesPending = False
    Dim bmp As New Bitmap(pnlContainer.Width, pnlContainer.Height)
    pnlContainer.DrawToBitmap(bmp, pnlContainer.ClientRectangle)
    e.Graphics.DrawImage(bmp, New Point(0,0))
    If MorePagesPending Then
        e.HasMorePages = True
    Else
        e.HasMorePages = False
    End If
End Sub
单击表单上的按钮时,将调用
SelectPrinterThenPrint()
方法。现在我有两个问题

1) 我不知道如何设置文件保存的位置。打印对话框打开,我可以选择我的PDF打印机,但它不允许我设置文件名。那么如何设置要打印的文件名呢


2) 因为我不知道文件是否真的被保存了,我也不知道我是否真的正确设置了打印。我试图打印一个面板的全部内容,其中包含我想要的PDF文件中的所有元素。但是,我不确定的一点是,面板的显示形式与面板的大小不同。面板所在的窗体具有相同的宽度,但高度不同,窗体设置为自动滚动。我能把整个面板打印出来吗?或者只是打印时表单中可见的部分?

您忘记了在以下行后面的p_Document.Print():AddHandler p_Document.PrintPage,AddressOf handleon PrintPage。还将PrintDialog.AllowPrintToFile设置为True。我相信这是默认设置,但无论如何都要这样做。@γηράσκωδαεπλλδδδδσκμε谢谢,我自己刚刚意识到这一点。天哪,我有时觉得自己很笨。