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