Una vez que tengamos el DataGridView con la información, creamos un botón que llama la función.
El DataGridView tendrá una columna llamada RUTA_IMAGEN que almacenara la ruta donde se encuentra la imagen a exportar, ejemplo: "c:\imagenes\articulo1.jpg"
Para el ejemplo necesitaremos la librería iTextSharp.
Puedes descargar la librería: http://sourceforge.net/projects/itextsharp/
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports System.IO
Private Sub impresion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles impresion.Click
Try
Dim doc As New Document(PageSize.A4.Rotate(), 10, 10, 10, 10)
'Guarda el reporte en el escritorio de windows (Desktop).
Dim filename As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\Reporte.pdf"
Dim file As New FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)
PdfWriter.GetInstance(doc, file)
doc.Open()
ExportarDatosPDF(doc)
doc.Close() Process.Start(filename)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Public Function GetColumnasSize(ByVal dg As DataGridView) As Single()
Dim values As Single() = New Single(dg.ColumnCount - 1) {}
For i As Integer = 0 To dg.ColumnCount - 1
values(i) = CSng(dg.Columns(i).Width)
Next
Return values
End Function
Public Sub ExportarDatosPDF(ByVal document As Document)
'Se crea un objeto PDFTable con el numero de columnas del DataGridView.
Dim datatable As New PdfPTable(DataGridView2.ColumnCount)
'Se asignan las propiedades del .PDF
datatable.DefaultCell.Padding = 3
Dim headerwidths As Single() = GetColumnasSize (DataGridView2)
datatable.SetWidths(headerwidths)
datatable.WidthPercentage = 100
datatable.DefaultCell.BorderWidth = 2datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT
'Se crea el encabezado en el PDF.
Dim encabezado As New Paragraph("REPORTE", New Font(Font.Name = "Tahoma", 20, Font.Bold))
Dim texto1 As New Paragraph("Nombre: " + Me.TextBox_nombre.Text, New Font(Font.Name = "Tahoma", 14, Font.Bold))
Dim texto2 As New Paragraph("Fecha: " + Me.DateTimePicker_fecha.Text, New Font(Font.Name = "Tahoma", 14, Font.Bold))
'Se capturan los nombres de las columnas del DataGridView.
For i As Integer = 0 To DataGridView2.ColumnCount - 1
datatable.AddCell(DataGridView2.Columns(i).HeaderText)
Next
datatable.HeaderRows = 1
datatable.DefaultCell.BorderWidth = 1 'Se generan las columnas del DataGridView.
For i As Integer = 0 To DataGridView2.RowCount - 2
For j As Integer = 0 To DataGridView2.ColumnCount - 1
If (j = 3) Then 'ubica la imagen en la columna 3 de datagridview
'capturo la ruta de la imagen
Dim RutaImage As String
RutaImage = DataGridView2("ruta_imagen", i).Value
'Procedo a convertir la imagen de tipo itextsharp.text.image
Dim Img As Image = Image.GetInstance(RutaImage)
'agrego la imagen a la celda
datatable.AddCell(Img)
Else
datatable.AddCell(DataGridView2(j, i).Value.ToString())
End If
Next
datatable.CompleteRow()
Next
'Se agrega el PDFTable al documento.
document.Add(encabezado)
document.Add(texto1)
document.Add(texto2)
document.Add(datatable)
End Sub
9 Comentarios
gracias muy bueno
ResponderBorrarGracias, Saludos
ResponderBorrarBuenas tardes. Gracias por él tutoríal.
ResponderBorrarComo puedo modificar el tamaño de la Fuente en el DTGV? Ej. Un tamaño de fuente 8.
Muchas gracias
Buenas tardes. Gracias por él tutoríal.
ResponderBorrarComo puedo modificar el tamaño de la Fuente en el DTGV? Ej. Un tamaño de fuente 8.
Muchas gracias
Muchas gracias por el tutorial.
ResponderBorrarComo podría modificar el tamaño de fuente del DTGV exportado al PDF.
Ej. Que lo exporte con un tamaño de fuente 8.
Muchas gracias.
Muchas gracias por el tutorial.
ResponderBorrarComo podría modificar el tamaño de fuente del DTGV exportado al PDF.
Ej. Que lo exporte con un tamaño de fuente 8.
Muchas gracias.
Solo modifica las líneas New Font(Font.Name = "Tahoma", 14, Font.Bold) con el tamaño y fuente que necesites.
ResponderBorrarhola en esta linea
ResponderBorrarProcess.Start(filename)
se origina el error de "No se ha podido encontrar la aplicación
el .pdf lo hace , pero no se muestra, que puede ser?
agregaste la librería itextsharp?
Borrar