iTextsharp: dibuja una línea al final y al inicio de una página con tablas
Seleccionando registros de una tabla, creo las tablas de iTextsharp, una para cada primera letra de los registros
En la imagen, una tabla para la letra "G":
"G" es una fila de 6 celdas
Luego una fila de 6 celdas con los "encabezados"
y luego filas con registros
Las celdas de las filas solo necesitan borde izquierdo y derecho.
Pero necesito dibujar o "cerrar" la línea de la última fila de la página y también dibujar o "abrir" la línea de la primera fila de la página siguiente.
Leí muchas publicaciones pero no puedo encontrar la solución
Sé cómo dibujar una línea gráfica y cómo encontrar las coordenadas o cómo establecer el borde inferior o superior, pero no sé cómo detectar el salto de página o si puedo manejar esta situación con pies de página o encabezados forzados solo en casos como el de la foto.
El código de la clase adaptado a VB Gracias a COeDev por el soporte
Ahora solo necesito resolver el Rectángulo (o dibujar una línea) porque no es lo mismo en VB.NET (Líneas marcadas como comentario)
Imports iTextSharp.text.pdf
Public Class LineaBottom
Implements IPdfPTableEvent
Public Sub TableLayout(table As PdfPTable, widths As Single()(), heights() As Single, headerRows As Integer, rowStart As Integer, canvases() As PdfContentByte) Implements IPdfPTableEvent.TableLayout
'Throw New NotImplementedException()
Dim columns As Integer
Dim rect As Rectangle
Dim footer As Integer = widths.Length - table.FooterRows
Dim header As Integer = table.HeaderRows - table.FooterRows + 1
Dim ultima As Integer = footer - 1
If ultima <> -1 Then
columns = widths(ultima).Length - 1
rect = New Rectangle(widths(ultima)(0), heights(ultima), widths(footer - 1)(columns), heights(ultima + 1))
'rect.BorderColor = BaseColor.BLACK
'rect.BorderWidth = 1
'rect.Border = Rectangle.TOP_BORDER
'canvases(PdfPTable.BASECANVAS).Rectangle(rect)
End If
End Sub
Espero que este código sirva a otras personas porque no hay mucha información en Internet.