【发布时间】:2017-10-17 19:40:13
【问题描述】:
所以我正在处理需要打印的表格。我想使用 Foxit PDF 打印机得到一个 PDF 文件。问题是我无法弄清楚如何将选定的路径作为文件位置,所以我不断得到路径不能为空。 错误。使用 Printform 时,我应该将文件位置放在代码中的什么位置? 在此代码中,文件夹名称是我要打印的位置。
Private Sub BtnPrint_Click(sender As Object, e As EventArgs) Handles BtnPrint.Click
Dim folderDlg As New FolderBrowserDialog
Dim foldername As String
folderDlg.ShowNewFolderButton = True
If (folderDlg.ShowDialog() = DialogResult.OK) Then
foldername = folderDlg.SelectedPath
Dim root As Environment.SpecialFolder = folderDlg.RootFolder
End If
PrintForm1.Print()
End Sub
编辑:
实际上删除了部分代码,但仍然出现相同的错误(我知道第一部分没有做任何事情)。我现在使用的是:
Private Sub BtnPrint_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles BtnPrint.Click
PrintForm1.Print()
End Sub
关于 Printform 的 Microsoft 帮助数据库也没有帮助,因为我完全按照它所说的做了,但仍然收到 Path is Null 错误
编辑 2: 所以我现在正在使用这段代码,它正在工作。
Private Sub BtnPrint_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles BtnPrint.Click
PrintDialog1.PrinterSettings = PrintForm1.PrinterSettings
PrintDialog1.AllowSomePages = True
If PrintDialog1.ShowDialog = DialogResult.OK Then PrintForm1.PrinterSettings = PrintDialog1.PrinterSettings
With Me.PrintForm1
.PrintAction = Printing.PrintAction.PrintToPreview
Dim MyMargins As New Margins
With MyMargins
.Left = 10
.Right = 10
.Top = 10
.Bottom = 10
End With
.PrinterSettings.DefaultPageSettings.Margins = MyMargins
.Print()
End With
End Sub
但是一旦我尝试设置它应该打印的区域,我就会收到以下错误:“打印不是 powerpacks 的成员”。我根据微软尝试使用以下代码,这是它应该工作的方式。我不知道错误来自哪里
.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.ClientAreaOnly)
【问题讨论】:
-
我不确定
.Print()是如何工作的——它是否使用了root?您确定 DialogResult 返回 True 吗?你调试过吗?我知道 Foxit,但不确定它是如何在这里使用的 - 这是一个 API/库吗? -
Printform.print() 工作,我得到对话框来选择打印机,在打印机的属性中我可以选择路径,但是一旦我按下打印,我就会得到错误没有选择路径。 Foxit 只是我正在使用的实际打印机,而且当我选择实际的物理打印机时,我得到了同样的错误。
-
好的,但我不明白打印机如何知道您在上面设置的路径是它打算使用的路径。您能否发布更多代码?我真的建议在您的代码中放置断点,并至少获取内部异常和/或堆栈跟踪失败的位。
-
“PDF 打印机”实际上并不是打印机。它只是一个作用类似于打印机的打印机驱动程序。非常方便,允许任何可以打印的应用程序生成 PDF 文件。但是你必须注意细节,它需要知道文件的路径。您必须将 PrinterSettings.PrintToFile 设置为 true 并设置 PrintFileName 属性。现在你知道了。