VB.Net打印表格到PDF打印机

时间:2018-08-03 14:22:35

标签: vb.net pdf printing

我现在正在尝试(但失败)在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文件中的所有元素。但是我不确定的一件事是,面板的显示形式与面板的大小不同。面板所在的窗体具有相同的宽度,但高度不同,并且该窗体设置为自动滚动。我可以打印整个面板吗?还是打印时在表单中可见的那一部分?

0 个答案:

没有答案