这不是您所要求的,但我将发布它,因为它可能对您有用。我在类似的情况下为我做了。也对 VB 语法感到抱歉
这将允许您使用 Crystal Reports 引擎将报表创建为 PDF。基本上,它允许您使用循环创建多个 PDF,然后可以自动打印。Export PDF Sub 会将文件写入磁盘,然后使用默认的 pdf 阅读器打开它。打印 PDF 功能将自动打印保存到磁盘的 PDF 文件。这不是一个完美的解决方案,但我希望它至少能让你更接近你想要完成的目标。
公开课 PDFCR
Private Const SW_SHOWNORMAL As Integer = 2
<DllImport("shell32")> _
Public Shared Function ShellExecute(ByVal hWnd As IntPtr, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Integer) As IntPtr
End Function
Public Shared Sub ExportPDF(ByVal crDOC As ReportDocument, ByVal FilePath As String)
Dim CrExportOptions As ExportOptions
Dim CrDiskFileDestinationOptions As New DiskFileDestinationOptions()
Dim CrFormatTypeOptions As New PdfRtfWordFormatOptions()
CrDiskFileDestinationOptions.DiskFileName = FilePath
CrExportOptions = crDOC.ExportOptions
CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat
CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions
CrExportOptions.FormatOptions = CrFormatTypeOptions
crDOC.Export()
Process.Start(FilePath)
End Sub
Public Shared Function PrintPDF(ByVal FilePath As String) As Boolean
If IO.File.Exists(FilePath) Then
If ShellExecute(CType(1, IntPtr), "Print", FilePath, "", _
Directory.GetDirectoryRoot(FilePath), SW_SHOWNORMAL).ToInt32 <= 32 Then
Return False
Else
Return True
End If
Else
Return False
End If
End Function
结束类
我无法让 Imports 在此代码块中显示,所以这里它们是纯文本。
导入 System.IO
导入 System.Management
导入 CrystalDecisions.Shared
导入 System.Runtime.InteropServices
导入 CrystalDecisions.CrystalReports.Engine