Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
A Vueltas Con Los Reportes
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje A Vueltas Con Los Reportes 
 
Tengo este problema desde que empecé con gambas y ya va siendo hora de que lo encare.

Hasta ahora he utilizado una clase (que está aquí publicada) para imprimir en HTML. Dispongo de otra para imprimir en XLS de manera que cualquier listado puedo entregarlo en cualquiera de los dos formatos.

Pero no es suficiente. Ambos formatos tienen una gran pega. No son suficientemente seguros. Son fácilmente manipulables y eso me complica la vida. Yo quiero imprimir en PDF que aún siendo posible complica lo bastante un informe para que pueda considerarlo a priori un formato válido.

Y me pongo a estudiar como imprimir en PDF y no encuentro soluciones en gambas. Tengo que acudir a terceras partes bien aplicaciones que lo hacen o bien imprimir con la impresora pdf. No acaba de convencerme.

También tengo entendido que un documento XML es fácilmente convertible a pdf.

El caso es que estoy considerando todas las formas posibles de crear un pdf no interactivo (esto es que pueda incluir imágenes, textos, hipervínculos y textos realzados utilizando únicamente gambas. Cuando termine habrá un componente con una serie de propiedades (márgenes, orientación papel, ...,etc) y funcionará algo parecido a un textedit. De hecho un textedit sería ideal para componer el texto solo que la propiedad text resultante debería ser un pdf y no un html.

Aún no tengo el dominio suficiente de textedit porque es bastante peleón, pero mas o menos esa es la idea que tengo y lo escribo porque no encuentro RFC ni lugar donde se explique la estructura de estos archivos. Todo lo mas la IO 19005-1:2005 pero es que hay que pagar $118 y paso. Debe haber algún sitio donde se explique con detalle este formato ¡si hay cientos y la madre aplicaciones que lo hacen! Si alguien conoce algún sitio donde pueda encontrar esa información le estaría muy agradecido.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: A Vueltas Con Los Reportes 
 
Ni idea, Soplo, tan sólo que sepas que abres camino para muchos. Actualmente yo estoy construyendo pdf imprimiendo html en el /tmp y luego usando otras herramientas (wkhtmltopdf, ps2pdf, etc) de modo transparente al usuario, pero tampoco me convence.

Si lo consigues y decides pasarlo será una gran ayuda.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: A Vueltas Con Los Reportes 
 
Yo si que no tengo ni idea... . Soplo podrías explicarme como lo has hecho hasta ahora con el HTML? Es que estoy haciendo un editor de texto con un TextEdit, y me imprime en HTML.
 




===================
http://sititechnoevolution.blogspot.com/
The universe is written in Gambas.
 
última edición por kotonfree el Lunes, 07 Febrero 2011, 22:47; editado 1 vez 
kotonfree - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: A Vueltas Con Los Reportes 
 
Soplo:
He mirado la wikipedia (supongo que tu tambien), y he encontrado este enlace que parece interesante http://www.fpdf.org/,

"FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib. La F de FPDF significa Free (gratis y libre): puede usted usarla para cualquier propósito y modificarla a su gusto para satisfacer sus necesidades."
Supongo que habra alguna panera de ejecurtar un programa PHP desde gambas...

Esta tambien http://sourceforge.net/projects/pdfcreator/ (que es código libre, y podrias estudiar como lo hace...)

En fin, si encuentro algo, vuelvo a escribir....

Saludos

Julio
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: A Vueltas Con Los Reportes 
 
Soplo, Shordi, dicen que generar un pdf a través de Cups o wkhtmltopdf no les convence, ¿cuál es el problema?

Otra opción es htmldoc.

Soplo, podrías ponerte en contacto con Luigi Carlotto que ha portado parcialmente la biblioteca FPDF a gambas con el nombre PdfWriter (Luigi es también autor de PgDesigner entre otros programas).

Saludos.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: A Vueltas Con Los Reportes 
 
Estoy ultimando un programa que permite imprimir cualquier dato de cualquier tabla MySQL o SQLite. Permite guardar formatos de listados, elegir entre un montón de diseños CSS, generar filtros y almacenarlos, hacer etiquetas de direcciones (o de lo que quieras), etc. etc. Todo ello sobre HTML.

El problema, Fabian, es el "renderizado" del html. Por ejemplo: Haces un listado html en el cual los datos están en una tabla y las cabeceras en el <theader>. Si lo imprimes desde wkhtmltopdf esas cabeceras no se repiten en cada página ni el <tfooter> tampoco.

Si pasas de renderizados y calculas tú las líneas de impresión e insertas cabeceras "a pelo", en la pantalla son horribles de ver, y ya no puedes dar libertad al usuario de elegir los campos a imprimir, etc (por cuanto ya no controlas el ancho del papel y demás.)

Tal vez haya alguna manera de "predecir" el ancho que tendrá la línea de datos seleccionados por el usuario impresa sobre el papel y dar el formato necesario, y los márgenes de impresora, etc. etc... pero yo no la conozco.

Por mi parte todo estaría correcto si wkhtmltopdf generase un resultado igual al que generan los navegadores (o si se pudiese decir al firefox que sólo queremos que imprima la página y no la muestre, claro). Lo más parecido que se me ha ocurrido es añadir en el html que genero aquello de <BODY onload="window.print()"> para que la caja de impresión se le abra al usuario...

Si alguien tiene alguna manera mejor de manejar el tema... por favor que lo diga.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: A Vueltas Con Los Reportes 
 
Al reflexionar sobre el tema me doy cuenta que son dos problemas.

Uno es obtener el informe propiamente dicho y otro el formatearlo.

El primer problema es obtener el informe. Estoy pensando en una clase con las siguientes propiedades
1. Papel a utilizar
2. Orientación
3. Titulo del informe
4. Cabecera de pagina
5. Pie de pagina
6. Ancho de columnas
8. Formato de dato en columnas
9. Grupos/Subtotales
10. Total General
11. Pie de informe
12. Numeracion de paginas

Y el resultado sería un texto ASCII con cada línea calculada del informe y un descriptor para indicar si esa linea es titulo, cabecera, grupo, pie, detalle, ... Sería un texto ascii donde únicamente está el contenido.

A partir de ese texto que sería un txt ya se lo podría meter a otra rutina que coge eso y es capaz de dejarlo en otro formato que podría ser desde html, xls, odt, pdf, ps y algún otro que ahora no caigo.

El formateado de informe
El formateado tendría que ver con la clase de documento a crear. Para definir un formato utilizaría un string mas o menos como sigue Fuente/tamaño/color/Negrita/Cursiva/Subradado/Tachado/Alineacion
Por ejemplo
1/24/255/N/c/s/t/C
Esto significa fuente 1 (font[1]
tamapño 24
azul (color.blue=255
N --> si está en mayuscula negrita ON si está en minuscula negrita OFF
C --> si está en mayuscula cursiva ON si está en minuscula cursiva OFF
S --> Si está en mayúscula subrayado ON si está en minúscula subrayado OFF
T --> Si está em mayúscula tachado ON si está en minúscula tachado OFF
A --> i izquierda D derecha C centro J justificado
Así que el ejemplo anterior es fuente 1 tamaño 24 en negrita centrado

Con esa definición de formato podría hacer tener las siguientes propiedades:
Titulo --> formato para el titulo
Cabecera --> formato para las cabeceras
Detalle --> formato para las líneas de detalle
Grupo --> formato para las lineas de grupo/subtotales
Totales --> formato para las lineas de total general
Pie --> formato para las lineas de pie.
Formato Salida --> html, pdf, xls, ps, ... el formato de salida
Fichero Salida --> nombre del informe resultante

La ventaja que le veo a este sistema es que parto de una misma base para formatear cualquier informe al sistema que quiera.

La parte que mas me interesa en este instante es la de crear el informe. Pongamos que tengo la clase hecha y le digo
Dim P as NEW GenerarInformeASCII
dim Titulo as NEW String[]
Dim Cabeceras as NEW String[]
Dim Grupos as NEW String[]
Dim Pie as NEW String[]
Dim Anchos_Columna as string
Dim Formato_Columna as String
P.query="select nombre as Nombre, telef as Telefono, dni as CIF/DNI, imp as Importe, iva as Iva, imp+iva as Total from ..."
P.Papel="A4"
P.Orientacion="P" 'orientación Portrait
Titulo.add"IINFORME DE FACTURAS A REALIZAR"
titulo.add("")
titulo.add("Desde "& Fecha_Desde & " a " & Fecha_Hasta)
titulo.add("")
Cabeceras.add("primera linea en cada página")
Cabeceras.add("segunda linea en cada pagina")
Grupos.add(3,"Cabecera_grupo",4,"Pie Grupo","MAX")
Grupos.add(4,"Cabecera grupo",4,"Pie Grupo","SUM")
Pie.add("primera linea pie de pagina"
Pie.add("segunda linea pie de pagina"
Anchos_Columna>"20/10/10/7/7/8" 'primera columna 20 car, segunda 10 car, ...
Formato_Columnas=" "/" "/" "/###.###,00/###.###,00/###.###,00"

todo así.

Puedo tener tantos subgrupos como quiera, en la select con el AS especifiqué el título de cada columna. El título por ejemplo puede tener tantas lineas como quiera. En los grupos especifico un string que la columna por la que agrupar, dice el texto de cabecera de cada grupo, la columna por la que calcular  a pie de grupo y el texto que debe tener. Tantos grupos como quiera. Cada uno dentro del anterior. Los anchos de columna medidos en caracteres. El formato de columnas en un formato válido FORMAT.

La clase genera la query, formatea los datos y devuelve el nombre de un archivo temporal que contiene eaa información.
Un Cat a ese archivo debería mostrar el informe con los campos separados por / las anchuras adecuadas y el formato de fechas, numeros, etc correcto. A partir de se archivo con las lineas ya calculadas realizar un formatu u otro solo es ir escribiendo en ese formato un string tras otro.

Ya quedaría formatear el informe con negritas, fuentes, etc y dejarlo en el tipo de salida especificado que es el segundo problema.

De esa forma podría tener una clase a la que le doy una query y me devuelve un archivo en un formato espeficado con datos debidamente calculados y formateados.
 



 
última edición por soplo el Martes, 08 Febrero 2011, 15:03; editado 1 vez 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: A Vueltas Con Los Reportes 
 
Llevo toda la tarde pensando en ello y me doy cuenta que ese es el planteamiento correcto. Partir de un formato de datos con solo texto que yo pueda convertir a lo que quiera.

En la práctica funciona igual que un crystal report salvo el pequeño detalle de que no es WYSWYGET pero permite coger cualquier query y obtener un informe en formato pdf, Txt, ps, html y algún otro con cierta facilidad. De ellos el que tengo menos idea es el pdf, pero seguro que lo conseguiré.

A ver si saco un poquito de tiempo y me pongo a ello. Si funciona como creo será una clase con muchas propiedades porque habrá que darle los títulos, encabezados, pies, grupos, formato de números, fechas, etc pero a cambio se obtiene el equivalente a crystal report en gambas.

Tengo que sacar un poquito de tiempo que ahora ando bastante pillado.

 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: A Vueltas Con Los Reportes 
 
Creo que son dos problemas distintos. La exportación de datos a html, csv, xls, odt o lo que sea es una cosa.

La impresión es otra.

Generar formatos tipo csv es bastante sencillo y no tiene nada que ver con la imprsión, tipo de letra, etc. etc.
En cuanto a los códigos para imprimir, ese camino lo empece yo hace algún tiempo... no exactamente igual, claro (que yo no utilizo el paradigma poo), pero acabé dándome cuenta de que volvía a intentar inventar la rueda.
Me explico: No es que no funcione, que funcionaría. Es que ya existe un lenguaje de marcas para todos esos formateos de datos: html y css.

Creo que con html y css se puede generar cualquier reporte con un sistema fácil de modificación. Entre ambos tienes clara la sepración de lo que es la estructura del listado, cabeceras, filas, líneas divisorias, márgenes, etc. y lo que son los tipos de letra, tamaños, etc. etc.

El 80% del trabajo ya está echo, creo. Lo que falta es el traspaso de ese conjunto a la impresora o al pdf (que es casi lo mismo).

Es mi opinión. A ver si lo afino un poco más y puedo subir el programa que tengo casi en fase Alfa para ilustrar esto que digo.
Lo he llamado, siguiendo mi sistema Mortadelo-Filemoniano de buscar nombre a los programas: La SIESTA (Solución para Impresos y Etiquetas de Tamaño Ajustable).
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: A Vueltas Con Los Reportes 
 
¿por que no usas el componente odt.gb(version 0.2.0), que cree?
pantallazo-2
pantallazo-1

Transforma un archivo "con etiquetas parecidas al html" y lo pasa a odt, y luego desde el openwrite lo puedes pasar a pdf. Asi te olvidas de numeros de paginas, y puede "reeditarlo" con el openwrite..

Si quieres ver un ejemplo "complejo" de como lo uso mira el programa lince. Genera informes, cambiando tipo de letras, tamaños, negrita, cursiva, etc....
pantallazo-1

Saludos...
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Reportes? soldadozero Controles/Librerías/Componentes 9 Miercoles, 25 Septiembre 2013, 20:17 Ver último mensaje
soldadozero
No hay nuevos mensajes A Vueltas Con El Jodío GPG [SOLUCIONADO] shordi General 15 Jueves, 12 Marzo 2015, 20:09 Ver último mensaje
shordi
No hay nuevos mensajes A Vueltas Con El Operador Ternario IIF Shell General 9 Miercoles, 02 May 2018, 08:17 Ver último mensaje
Shell
No hay nuevos mensajes A Vueltas Con Las Traducciones Shell General 3 Martes, 28 May 2019, 08:55 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron