none
Generar una tabla con iTextSharp.text.pdf

    Pregunta

  • Hola,

    Lo que deseo es implementar una tabla en unos campos de texto que tengo ( pero no se como realizar una cuadricula )

    Gracias

    [Código]

      Dim strRuta As String = String.Empty
            Dim sw As New StringWriter()
            Dim htw As New HtmlTextWriter(sw)
            Dim sr As New StringReader(sw.ToString())
            Dim pdf As New Document(PageSize.A4)
            Dim htmlParse As New HTMLWorker(pdf)
            Dim pdfTable As New PdfPTable(4)
    
    
    
            Using ms As New MemoryStream()
                Dim writer As PdfWriter = PdfWriter.GetInstance(pdf, ms)
    
                pdfTable.DefaultCell.Border = 0
                pdfTable.TotalWidth = 520
                pdfTable.LockedWidth = True
                pdfTable.SpacingBefore = 20.0F
                pdfTable.SpacingAfter = 20.0F
    
                Dim ruta As String = Server.MapPath("~/Images/Logo.png")
    
                Dim imagen As iTextSharp.text.Image 'declaración de imagen
                imagen = iTextSharp.text.Image.GetInstance(ruta) 'nombre y ruta de la imagen a insertar
                imagen.ScalePercent(50.7) 'escala al tamaño de la imagen
                imagen.SetAbsolutePosition(40, 750) 'posición en la que se inserta. 40 (de izquierda a derecha). 500 (de abajo hacia arriba)
    
    
                Dim Subtituloa As New PdfPCell(New Phrase(" ", New Font(Font.BOLD, 12.0F)))
                Subtituloa.Colspan = 3
                Subtituloa.Border = 0
                Subtituloa.FixedHeight = 90
                pdfTable.AddCell(Subtituloa)
    
                Dim Tituloa As String = String.Format("León Guanajuato " + DateTime.Now.ToString("dd/MM/yyyy"))
                Dim pdfCeldaFechaa As New PdfPCell(New Phrase(Tituloa, New Font(Font.BOLD, 12.0F, Font.BOLD, Color.BLACK)))
                pdfCeldaFechaa.HorizontalAlignment = iTextSharp.text.Element.ALIGN_RIGHT
                pdfCeldaFechaa.Border = 0
                pdfTable.AddCell(pdfCeldaFechaa)
    
    
    
                Dim tituloespacio As New PdfPCell(New Phrase(" ", New Font(Font.BOLD, 20.0F, Font.BOLD, Color.BLACK)))
                tituloespacio.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                tituloespacio.Colspan = 4
                tituloespacio.Border = 0
                tituloespacio.FixedHeight = 20
                pdfTable.AddCell(tituloespacio)
    
                Dim PdfTitulo As New PdfPCell(New Phrase("Gestión De Vehiculos", New Font(Font.BOLD, 20.0F, Font.BOLD, Color.BLACK)))
                PdfTitulo.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                PdfTitulo.Colspan = 4
                PdfTitulo.Border = 0
                PdfTitulo.FixedHeight = 60
                pdfTable.AddCell(PdfTitulo)
    
                Dim Subtitulo As New PdfPCell(New Phrase("asdaskdjaslkdjaslkdjaslkjdaslkjdlskdjsalkjdlaskdjlaskjdaslkjdaslkjdaslkdjalskdjlaksdjlkasjdlkasdjlkasjdlkasjdklasdlkasd" +
                                                         "sdlkasjdlkasjdlkasjdlkaasdaksñldjaskjdlaksdjalksjdlaksjdlaksjdlkasdjalksdjalskdlkasdalskjdaksldjklasjdklasjdlkasjdlkasjdl" +
                                                         "asdlkñsañdaksjdñkjasdkjaslkdjasldjaslkjdlaksdjlkasjdlaksjdlkasjdlkasjdlkasjdlkasjdalksjdlaksjdlkasjdlkasjdlkasdjlkasdjlkasjd", New Font(Font.BOLD, 12.0F)))
                Subtitulo.Colspan = 4
                Subtitulo.Border = 0
                Subtitulo.FixedHeight = 90
                pdfTable.AddCell(Subtitulo)
    
                
    
                Dim Modelo As String = String.Format("Modelo Del Vehiculo: " + txtModelo_pdf.Text)
                Dim pdfCeldaModelo As New PdfPCell(New Phrase(Modelo, New Font(Font.BOLD, 9.0F)))
                pdfCeldaModelo.Colspan = 3
                pdfCeldaModelo.Border = 0
                pdfTable.AddCell(pdfCeldaModelo)
                Dim pdfCeldaRespuestaModelo As New PdfPCell(New Phrase(" ", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCeldaRespuestaModelo.Border = 0
                pdfTable.AddCell(pdfCeldaRespuestaModelo)
    
                Dim Matricula As String = String.Format("Matricula: " + txtMatricula_pdf.Text)
                Dim pdfCeldaMatricula As New PdfPCell(New Phrase(Matricula, New Font(Font.BOLD, 9.0F)))
                pdfCeldaMatricula.Colspan = 3
                pdfCeldaMatricula.Border = 0
                pdfTable.AddCell(pdfCeldaMatricula)
                Dim pdfCeldaRespuestamatricula As New PdfPCell(New Phrase(" ", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCeldaRespuestamatricula.Border = 0
                pdfTable.AddCell(pdfCeldaRespuestamatricula)
    
                Dim Responsable As String = String.Format("Responsable: " + txtResponsable_pdf.Text)
                Dim pdfCeldaResponsable As New PdfPCell(New Phrase(Responsable, New Font(Font.BOLD, 9.0F)))
                pdfCeldaResponsable.Colspan = 3
                pdfCeldaResponsable.Border = 0
                pdfTable.AddCell(pdfCeldaResponsable)
                Dim pdfCeldaRespuestaResponsable As New PdfPCell(New Phrase(" ", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCeldaRespuestaResponsable.Border = 0
                pdfTable.AddCell(pdfCeldaRespuestaResponsable)
    
                Dim Motivo As String = String.Format("Motivo: " + txtMotivo_pdf.Text)
                Dim pdfCeldaMotivo As New PdfPCell(New Phrase(Motivo, New Font(Font.BOLD, 9.0F)))
                pdfCeldaMotivo.Colspan = 3
                pdfCeldaMotivo.Border = 0
                pdfTable.AddCell(pdfCeldaMotivo)
                Dim pdfCeldaRespuestaMotivo As New PdfPCell(New Phrase(" ", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCeldaRespuestaMotivo.Border = 0
                pdfTable.AddCell(pdfCeldaRespuestaMotivo)
    
                Dim Localizacion As String = String.Format("Localizacion: " + txtLocalizacion_pdf.Text)
                Dim pdfCeldaLocalizacion As New PdfPCell(New Phrase(Localizacion, New Font(Font.BOLD, 9.0F)))
                pdfCeldaLocalizacion.Colspan = 3
                pdfCeldaLocalizacion.Border = 0
                pdfTable.AddCell(pdfCeldaLocalizacion)
                Dim pdfCeldaLocalizacionRespuesta As New PdfPCell(New Phrase(" ", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCeldaLocalizacionRespuesta.Border = 0
                pdfTable.AddCell(pdfCeldaLocalizacionRespuesta)
    
                Dim Status As String = String.Format("Status: " + cmbStatus_pdf.Text)
                Dim pdfCeldaStatus As New PdfPCell(New Phrase(Status, New Font(Font.BOLD, 9.0F)))
                pdfCeldaStatus.Colspan = 3
                pdfCeldaStatus.Border = 0
                pdfTable.AddCell(pdfCeldaStatus)
                Dim pdfCeldaStatusRespuesta As New PdfPCell(New Phrase(" ", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCeldaStatusRespuesta.Border = 0
                pdfTable.AddCell(pdfCeldaStatusRespuesta)
    
                Dim Observacion As String = String.Format("Observación: " + txtObservacion_pdf.Text)
                Dim pdfCeldaObservacion As New PdfPCell(New Phrase(Observacion, New Font(Font.BOLD, 9.0F)))
                pdfCeldaObservacion.Colspan = 3
                pdfCeldaObservacion.Border = 0
                pdfTable.AddCell(pdfCeldaObservacion)
                Dim pdfCeldaObservacionRespuesta As New PdfPCell(New Phrase(" ", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCeldaObservacionRespuesta.Border = 0
                pdfCeldaObservacionRespuesta.FixedHeight = 350
                pdfTable.AddCell(pdfCeldaObservacionRespuesta)
    
    
                Dim pdfCelda694 As New PdfPCell(New Phrase("______________________________", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCelda694.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                pdfCelda694.Colspan = 2
                pdfCelda694.Border = 0
                pdfTable.AddCell(pdfCelda694)
                Dim pdfCelda700 As New PdfPCell(New Phrase("______________________________", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCelda700.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                pdfCelda700.Colspan = 2
                pdfCelda700.Border = 0
                pdfTable.AddCell(pdfCelda700)
    
    
                Dim pdfCelda711 As New PdfPCell(New Phrase("xx", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCelda711.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                pdfCelda711.Colspan = 2
                pdfCelda711.Border = 0
                pdfCelda711.FixedHeight = 30
                pdfTable.AddCell(pdfCelda711)
    
                Dim pdfCelda722 As New PdfPCell(New Phrase("xx", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCelda722.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                pdfCelda722.Colspan = 2
                pdfCelda722.Border = 0
                pdfCelda722.FixedHeight = 30
                pdfTable.AddCell(pdfCelda722)
    
    
                Dim pdfCsdelda694 As New PdfPCell(New Phrase("______________________________", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCsdelda694.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                pdfCsdelda694.Colspan = 4
                pdfCsdelda694.Border = 0
                pdfTable.AddCell(pdfCsdelda694)
    
                Dim pdfCel34da722 As New PdfPCell(New Phrase("Guardia", New Font(Font.BOLD, 9.0F, Font.BOLD, Color.BLACK)))
                pdfCel34da722.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                pdfCel34da722.Colspan = 4
                pdfCel34da722.Border = 0
                pdfTable.AddCell(pdfCel34da722)
    
    
    
                pdf.Open()
                pdf.Add(imagen)
                pdf.Add(pdfTable)
                htmlParse.Parse(sr)
                pdf.Close()
    
    
                Dim bytes As Byte() = ms.ToArray()  'Obtienes los bytes
    
                Response.Clear()
                Response.ContentType = "application/pdf"
                Response.AddHeader("Content-Disposition", "attachment; filename=aPrueba.pdf")
                Response.ContentType = "application/pdf"
                Response.Buffer = True
                Response.Cache.SetCacheability(HttpCacheability.NoCache)
                Response.BinaryWrite(bytes)
                Response.End()
                Response.Close()
    
            End Using
    
        End Sub

    y el resultado es el siguiente

    y lo que yo pretendo hacer es lo siguiente 

    lunes, 17 de abril de 2017 17:32

Respuestas

  • Claro, un gusto

    A ver en imágenes y el código.

    Citado desde la web Escribir tablas en un PDF con iTextsharp:

    Private Sub InsertarTabla(ByRef pCb As pdf.PdfContentByte, ByRef pTabla As DataTable, ByRef pDimensionColumnas() As Single, ByVal pIncluirEncabezado As Boolean)
     
           Dim table As New iTextSharp.text.pdf.PdfPTable(pTabla.Columns.Count)
           table.TotalWidth = pCb.PdfDocument.PageSize.Width - 100
     
           table.SetWidths(pDimensionColumnas)
     
           table.SpacingBefore = 1.0F
           table.SpacingAfter = 1.0F
     
           If pIncluirEncabezado Then
               Dim fuenteEncabezado As text.Font = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 10, iTextSharp.text.Font.NORMAL)
     
               For Each oColumna As Data.DataColumn In pTabla.Columns
                   Dim celda As New pdf.PdfPCell(New Phrase(oColumna.Caption, fuenteEncabezado))
                   celda.Colspan = 1
                   celda.Padding = 5
                   celda.BackgroundColor = iTextSharp.text.pdf.ExtendedColor.CYAN
                   celda.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                   celda.VerticalAlignment = iTextSharp.text.Element.ALIGN_TOP
                   table.AddCell(celda)
               Next oColumna
           End If
     
           Dim fuenteDatos As text.Font = FontFactory.GetFont(FontFactory.COURIER, 8, iTextSharp.text.Font.NORMAL)
     
           For Each oFila As Data.DataRow In pTabla.Rows
               For Each oColumna As Data.DataColumn In pTabla.Columns
                   Dim celda As New pdf.PdfPCell(New Phrase(oFila(oColumna), fuenteDatos))
                   celda.Colspan = 1
                   celda.Padding = 3
                   celda.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                   celda.VerticalAlignment = iTextSharp.text.Element.ALIGN_TOP
                   table.AddCell(celda)
               Next oColumna
           Next oFila
           table.WriteSelectedRows(0, -1, 50, 800, pCb)
           pCb.PdfWriter.Flush()
       End Sub
    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.


    lunes, 17 de abril de 2017 18:05

Todas las respuestas

  • Hola Elíhu Neftali Sandoval Rodríguez

    échale un ojo a este link

    Escribir tablas en un PDF con iTextsharp VB

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    lunes, 17 de abril de 2017 17:44
  • Tengo el sitio bloqueado ( de donde yo trabajo) 

    puedes por favor pasarme el código y yo visualizarlo porfavor

    lunes, 17 de abril de 2017 17:50
  • Claro, un gusto

    A ver en imágenes y el código.

    Citado desde la web Escribir tablas en un PDF con iTextsharp:

    Private Sub InsertarTabla(ByRef pCb As pdf.PdfContentByte, ByRef pTabla As DataTable, ByRef pDimensionColumnas() As Single, ByVal pIncluirEncabezado As Boolean)
     
           Dim table As New iTextSharp.text.pdf.PdfPTable(pTabla.Columns.Count)
           table.TotalWidth = pCb.PdfDocument.PageSize.Width - 100
     
           table.SetWidths(pDimensionColumnas)
     
           table.SpacingBefore = 1.0F
           table.SpacingAfter = 1.0F
     
           If pIncluirEncabezado Then
               Dim fuenteEncabezado As text.Font = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 10, iTextSharp.text.Font.NORMAL)
     
               For Each oColumna As Data.DataColumn In pTabla.Columns
                   Dim celda As New pdf.PdfPCell(New Phrase(oColumna.Caption, fuenteEncabezado))
                   celda.Colspan = 1
                   celda.Padding = 5
                   celda.BackgroundColor = iTextSharp.text.pdf.ExtendedColor.CYAN
                   celda.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                   celda.VerticalAlignment = iTextSharp.text.Element.ALIGN_TOP
                   table.AddCell(celda)
               Next oColumna
           End If
     
           Dim fuenteDatos As text.Font = FontFactory.GetFont(FontFactory.COURIER, 8, iTextSharp.text.Font.NORMAL)
     
           For Each oFila As Data.DataRow In pTabla.Rows
               For Each oColumna As Data.DataColumn In pTabla.Columns
                   Dim celda As New pdf.PdfPCell(New Phrase(oFila(oColumna), fuenteDatos))
                   celda.Colspan = 1
                   celda.Padding = 3
                   celda.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
                   celda.VerticalAlignment = iTextSharp.text.Element.ALIGN_TOP
                   table.AddCell(celda)
               Next oColumna
           Next oFila
           table.WriteSelectedRows(0, -1, 50, 800, pCb)
           pCb.PdfWriter.Flush()
       End Sub
    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.


    lunes, 17 de abril de 2017 18:05
  • Gracias Amigo
    lunes, 17 de abril de 2017 18:18