miércoles, 4 de abril de 2012

Función para iTextSharp en VB.net que recibe un DataSet y retorna una Tabla en cierta coordenada X Y

Esta es una funcion muy sencilla para mandar imprimir a traves de coordenadas cartesianas una matriz de datos de un DataSet,

Paso 1.

Verificar que nuestra dll ( libreria de iTextSharp) se encuentra en el directorio del proyecto








Paso 2.

Ingresar las librerias del iTextSharp como se indica
Imports iTextSharp.text
Imports iTextSharp.text.pdf

Paso 3

Esta es la funcion y su llamado
Sub agregar_tablaPDF_XY(ByRef datos As DataTable, ByVal x As Integer, ByVal y As Integer, ByVal cb As PdfContentByte, ByVal BF_Times As BaseFont, ByVal Espx As Int32, ByVal Espy As Int32)
        Dim nc, nf, nfila As Integer
        Dim indX As Int32 = x
        Dim indY As Int32 = y
        Dim posx As Int32 = x
        Dim posy As Int32 = y


        For nf = 0 To datos.Rows.Count
            indX = x
            For nc = 0 To datos.Columns.Count - 1
                If nf = 0 Then

             coloca_textoxy(datos.Columns(nc).ColumnName, cb, BF_Times, indX, indY)
                Else
                    nfila = nf - 1
            coloca_textoxy(datos(nfila)(nc).ToString(), cb, BF_Times, indX, indY)
                End If
                indX += Espx
            Next
            indY -= Espy
        Next
     End Sub

Sub coloca_textoxy(ByVal valor As String, ByVal cb As PdfContentByte, ByVal BF_Times As BaseFont, ByVal x As Int32, ByVal y As Int32)
cb.BeginText()
cb.SetFontAndSize(BF_Times, 8)   
cb.SetTextMatrix(x, y)        cb.ShowText(valor)        cb.EndText()
End Sub 

Esta es la forma en la que se manda llamar la funcion
agregar_tablaPDF_XY(dsDetalle, 80, 610, cb, BF_Times, 50, 12)

Es un ejemplo muy sencillo, pero practico
un saludo

1 comentario: