Creación de Informes: La clase Latex
Llevo varias entradas, comentadoos, pequeñas herramientas para crear informes:
Aunque esta el gb.Report (que para mí nunca ha sido fácil de usar), una de las cosas que he echado en falta, era algo realmente cómodo y fácil de usar, para generar informes en nuestras aplicación.
Pues, después de ver varios videos sobre texmaker (enlace), pensé en hacer una clase que aprovechara la potencia de Latex, para crear documentos y convertirlos en Pdf.
Os dejo aqui (enlace de descarga (versión ejemplo del video)) una aplicación de ejemplo de esta clase llamada ClassLatex, es muy sencilla de usar, y permite:
- -Definir Cabeceras y Pies de páginas
- -Insertar imagenes, con escalado y/o rotación
- -Cajas
- -Cajas de distintos marcos
- -Cajas con icono y mensaje de distintas formas
- -Citas y Bibliográficas
- -Notas a pie de página
- -Se pueden indicar anchos verticales y horizontales.
- -Para poder añadir usepackage no incluidos inicialmente en la clase.
- -HojaApaisadaInicio: (te escribe la pagina en apaisado (por si la tablas tienen muchas columnas)
- - HojaApaisadaFin: (fin de la hoja en apaisado..)
-Crear listas, secciones, subrayado, negrita, centrado de texto, etc. - -Tamaño de texto y tipo de letras
Y especialmente estos dos métodos,
- - ResultadoConsultaDB: Muy útil, ya que le pasas el resultado de una consulta de base de datos, y te muestra la tabla de resultados, con los nombres de campos de las consultas en la primera fila...
- - TablaGridview: escribe una tabla con los datos que tenga el gridview
- Videos tutoriales: 1º Parte
2º parte
Aquí tenéis parte del código del ejemplo para crear un documento:
Dim tex As String
Dim parrafada As String
Me.center
documento.Cabecera("Cabecera:izquierda", "Cabecera:centro", "Cabecera:derecha")
documento.Pie("Pie:izquierda", "Pie:centro", "Pie:derecha" & documento.numeropagina())
tex &= documento.LineaJustCentrado(documento.Tam3LargeP("Ejemplo de uso"))
tex &= documento.vspace(1.5) 'añado espacio entre las lineas
tex &= documento.LineaJustCentrado(documento.Tam4Huge("Clase ClassLatex"))
tex &= documento.vspace(1.5)
tex &= documento.LineaJustCentrado(documento.Tam2Large("Autor: JsbSan"))
tex &= documento.vspace(0.5)
tex &= documento.LineaJustCentrado(documento.fecha())
tex &= documento.vspace(3)
tex &= documento.texto("Esto es una prueba de uso de la clase ClassLaTex.")
.....
.....
tex &= documento.tiposmallCaps("hola esto es una prueba" & documento.Cita("David"))
tex &= documento.CrLf()
tex &= documento.Tipoitalica("Esto es talica" & documento.Cita("Juan"))
tex &= documento.CrLf()
tex &= documento.negrita("Esto es en negrita" & documento.NotaPieDePagina("nota: esta escrito en negrita"))
tex &= documento.subrayado(" y esto subrayado")
tex &= documento.texto("siento esto la letra normal")
tex &= documento.CrLf()
tex &= documento.LineaJustIzq("justificado a la izquierda")
tex &= documento.LineaJustCentrado("Centrado")
........
tex &= documento.texto("$$\\int_{x=0}^{\\infty} x\\,{\\rm e}^{-x^2} {\\rm d}x =\\frac{1}{2},\\quad {\\rm e}^{i\\pi}+1=0$$")
tex &= documento.CrLf()
tex &=documento.texto("Muestro datos de un gridviews:")
tex &=documento.CrLf()
tex &=documento.TablaGridViews(gridview1)
tex &= documento.CrLf()
tex &= documento.finPagina()
tex &= documento.HojaApaisadaInicio()
tex &= documento.texto("Consulta de una base de datos: ")
tex &= documento.CrLf()
tex &= documento.ResultadoConsultaDB(resultados,False)
tex &= documento.CrLf()
tex &= documento.texto("Ahora tambien puede escribir documentos en apaisado, sobre todo para tablas que tengan muchas columnas, puede ser muy útil ¿verdad?")
tex &= documento.HojaApaisadafin()
tex &= documento.finPagina()
tex &= documento.TablaDeContenido()
tex &= documento.finPagina()
tex &= documento.texto("Listas")
tex &= documento.CrLf()
tex &= documento.ListaEnumeradaInicio()
tex &= documento.ListaDato("lista 1")
tex &= documento.texto("Hola esto es el párrafo de la lista 1")
tex &= documento.ListaDato("lista 2")
tex &= documento.texto("Hola esto es el párrafo de la lista 2. Bienvenido")
tex &= documento.ListaEnumeradaFin()
tex &= documento.texto("Secciones:")
tex &= documento.CrLf()
tex &= documento.Seccion("Inicio")
tex &= documento.Seccion("Medio")
.....
tex &= documento.grafica(Application.Path & "/Dama.png", 0.5, 35)
tex &= documento.cajaMensaje(parrafada, 4)
tex &= documento.CajaIcono("titulo de la caja", "Esto es el texto largo",Application.Path &"/Dama.png", 0.5,35, 4)
.... documento.BibliografiaFin()
'generamos el documento
documento.compila(tex,"prueba")
Este es el pdf de ejemplo que se crea en el ejempo: descarga pdf
Nota:
El código de esta clase es extremadamente sencillo, y es fácil portar a otros lenguajes: c++, java, python, etc..
Fuente: Enlace al foro gambas-es.org:
Fuente: http://jsbsan.blogspot.com.es/2013/01/creacion-de-informes-la-clase-latex.html
No hay comentarios:
Publicar un comentario