Hoy vamos a ver que fácil es crear un archivo pdf desde un informe de cystal reports .net. Para ello utilizaremos una función a la que enviaremos la ruta y el nombre del informe de crystal reports, el datatable usado como origen de datos en el informe, y la ruta y nombre del archivo pdf a crear. En el código de ejemplo mostrado debajo hacemos uso de un botón para inicializar las variables con las rutas del informe y del archivo pdf. También poblaremos el datatable que se utiliza como origen de datos del report.
Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Imports System.Data.SqlClient Public Class Form1 Private Sub btnCrearPdf_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click Dim rpt as string = "C:\Rpts\Clientes.rpt" Dim pdf as string = "C:\Temp\ClientesIbericos.pdf" Dim dtClientes as datatable = new Datatable Dim daClientes as SqlDataAdapter = New SqlDataAdapter("SELECT * FROM Clientes ORDER BY Nombre", _ "Data Source=SQLSERVER\sqlexpress;Initial Catalog=dbTest" & _ ";User Id=sa;Password=contraseña_sa") daClientesFillSchema(dtClientes, SchemaType.Source) daClientes.fill(dtClientes) RptToPdf(rpt, dtClientes, pdf) End Sub Private Sub RptToPdf(ByVal RutaRpt As String, _ ByVal DataTableReport As DataTable, _ ByVal RutaPdf As String) Dim crExportOptions As CrystalDecisions.Shared.ExportOptions = _ New CrystalDecisions.Shared.ExportOptions Dim crDiskFileDestinationOptions As CrystalDecisions.Shared.DiskFileDestinationOptions = _ New CrystalDecisions.Shared.DiskFileDestinationOptions Dim rpt As CrystalDecisions.CrystalReports.Engine.ReportDocument = _ New CrystalDecisions.CrystalReports.Engine.ReportDocument 'Abrir informe, establecer la conexión, filtrar registros, y generar el pdf With rpt .Load(RutaRpt) .DataSourceConnections(0).SetConnection("SQLServer\sqlexpress", "dbTest", "sa", "contraseña_sa") .SetDataSource(DataTableReport) .DataDefinition.RecordSelectionFormula = "{Clientes.PaisId} = '034'" crDiskFileDestinationOptions.DiskFileName = RutaPdf With crExportOptions .ExportDestinationType = ExportDestinationType.DiskFile .ExportFormatType = ExportFormatType.PortableDocFormat .DestinationOptions = crDiskFileDestinationOptions End With End With Try rpt.Export(crExportOptions) Catch ex As Exception MessageBox.Show(ex.Message, "Error al crear pdf", MessageBoxButtons.OK) Finally rpt.Close() End Try End Sub End Class