https://foro.gambas-es.org/viewtopic.php?f=1&t=757&p=5123#p5123 ----------------------------------- jousseph Jueves, 26 Agosto 2010, 05:13 Re: Como Hago Para Imprimir Una Tableview Y Guardar El Archivo En Pdf En Gambas ----------------------------------- Hola compañeros ya lo solucione lo hicey dure bastante, imagínense junto con la sentencia imprimir esto es una ganga. OBSERVEN: [code linenumbers=false syntax=gambas] PUBLIC SUB Form_Open() DIM i AS Integer DIM fila AS Integer DIM textos AS NEW String[] DIM numer AS Integer tabla.Header = TRUE ME.Center IF coneccion.conectarbase() THEN RETURN tabla.Clear() tabla.Columns.Count = 14 tabla.Columns[0].Text = "ID" tabla.Columns[1].Text = "codigo" tabla.Columns[2].Text = "cedula" tabla.Columns[3].Text = "nombres" tabla.Columns[4].Text = "apellidos" tabla.Columns[5].Text = "direccion" tabla.Columns[6].Text = "telefonos" tabla.Columns[7].Text = "sexo" tabla.Columns[8].Text = "programa" tabla.Columns[9].Text = "fecha_ingreso" tabla.Columns[10].Text = "fecha_asistencia" tabla.Columns[11].Text = "dia_semanas" tabla.Columns[12].Text = "hora_entrada" tabla.Columns[13].Text = "hora_salida" fila = fila + 1 tabla.Refresh END PUBLIC SUB reporte() 'variables a usar en el reporte DIM header AS ReportVBox DIM cont AS ReportHBox DIM lab AS ReportLabel DIM body AS ReportVBox DIM lab3 AS ReportLabel DIM colu AS ReportHBox DIM i, j AS Integer DIM foot AS ReportHBox DIM lab2 AS ReportLabel DIM pag AS ReportSpecialField DIM textos AS NEW String[] DIM numer AS Integer report.Clear 'configuracion del reporte Report.Orientation = Report.FillStyle Report.Resolution = Printer.Resolution Report.Padding = "1 cm" Report.Size = "A4" Report.Spacing = "10 mm" 'estructura del encabezado del reporte header = NEW ReportVBox(Report) header.LineStyle = Line.Solid header.Autoresize = TRUE header.ForeColor = Color.black header.FillColor = Color.Blue header.FillStyle = Fill.Solid 'texto del encabezado cont = NEW ReportHBox(header) cont.Autoresize = TRUE cont.Height = "0.10 cm" cont.Expand = TRUE lab = NEW ReportLabel(cont) lab.Font.Size = 15 lab.Font.Bold = 10 lab.ForeColor = Color.white lab.Alignment = Align.Center lab.Text = ("REPORTES PARA LA ASISTENCIA DE ASESORES") lab.Expand = TRUE 'estructura del cuerpo del reporte body = NEW ReportVBox(Report) body.LineStyle = Line.Solid body.ForeColor = Color.black body.Autoresize = TRUE colu = NEW ReportHBox(body) colu.Autoresize = TRUE colu.Spacing = "1 cm" foot = NEW ReportHBox(Report) foot.LineStyle = Line.Solid foot.Autoresize = TRUE foot.ForeColor = Color.black foot.FillColor = Color.LightGray foot.FillStyle = Fill.Solid foot.Spacing = "4 cm" lab2 = NEW ReportLabel(foot) lab2.Alignment = Align.Center lab2.Autoresize = TRUE lab2.Text = "Hora= " & Time lab2 = NEW ReportLabel(foot) lab2.Alignment = Align.Center lab2.Autoresize = TRUE lab2.Text = "Fecha= " & Date pag = NEW ReportSpecialField(foot) pag.Text = "Pagina $PAGE de $NPAGE" 'contenido del cuerpo del reporte FOR i = 0 TO tabla.Columns.Count - 1 lab = NEW ReportLabel(colu) lab.Text = tabla.Columns[i].Text lab.Font.Bold = TRUE lab.Autoresize = TRUE lab.Expand = TRUE lab.Alignment = Align.Center NEXT FOR i = 0 TO tabla.rows.Count - 1 colu = NEW ReportHBox(body) colu.Autoresize = TRUE colu.Spacing = "1 cm" FOR j = 0 TO tabla.Columns.Count - 1 lab = NEW ReportLabel(colu) lab.Text = tabla[i, j].Text lab.Autoresize = TRUE lab.Expand = TRUE lab.Alignment = Align.Center NEXT NEXT END PUBLIC SUB Button1_Click() reporte() Report.Preview END PUBLIC SUB Button3_Click() DIM ArchivoTemporal AS String DIM i AS Integer 'genero la estructura del reporte reporte() 'inicializo el archivo temporal ArchivoTemporal = Temp 'Inicio el objeto impresion para imprimir a un archivo Printer.File = ArchivoTemporal Printer.Size = report.Size Printer.Orientation = report.Orientation report.Resolution = printer.Resolution 'inicio el Trazado hacia el objeto printer Draw.Begin(Printer) Report.Layout 'recorro el numero de hojas del reporte FOR i = 1 TO Report.count Report.Draw(i) IF i < Report.count THEN Printer.NewPage() NEXT 'finalizo el trazado al buffer de impresora Draw.End 'uso el programa externo ps2pdf (de impresora a pdf) y genero el archivo en el home del usuario EXEC ["ps2pdf", ArchivoTemporal, User.Home &/ "reporte.pdf"] WAIT 'elimino el archivo temporal KILL ArchivoTemporal Message.Info("SE HA CREADO UN REPORTE EN PDF CON ÉXITO (GUARDADO EN HOME) ") END PUBLIC SUB Button2_Click() DIM ruta AS String DIM archivo AS File DIM i, j AS Integer ruta = User.Home &/ "reporte de asistencia.html" OPEN ruta FOR WRITE CREATE AS #archivo PRINT #archivo, "" PRINT #archivo, "Reporte en HTML de Asistencias" PRINT #archivo, "" PRINT #archivo, "" PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " PRINT #archivo, " " FOR i = 0 TO tabla.rows.Count - 1 PRINT #archivo, " " FOR j = 0 TO tabla.Columns.Count - 1 PRINT #archivo, " " NEXT PRINT #archivo, " " NEXT PRINT #archivo, "
" PRINT #archivo, "

Listado de Asistencias

" PRINT #archivo, "
CodigoCedulaNombresApellidosDireccionTelefonoSexoProgramaFecha de IngresoFecha de AsistenciaDias de SemanaHora de EntradaHora de Salida/td>" PRINT #archivo, "
" & tabla[i, j].Text & "
" PRINT #archivo, "" PRINT #archivo, "" CLOSE #archivo Message.Info("SE HA CREADO UN REPORTE EN MODO HTML CON ÉXITO (GUARDADO EN HOME)") END PUBLIC SUB Button4_Click() DIM i AS Integer 'genero la estructura del reporte reporte() printer.Setup Printer.Size = report.Size Printer.Orientation = report.Orientation report.Resolution = printer.Resolution 'inicio el Trazado hacia el objeto printer Draw.Begin(Printer) Report.Layout 'recorro el numero de hojas del reporte FOR i = 1 TO Report.count Report.Draw(i) IF i < Report.count THEN Printer.NewPage() NEXT 'finalizo el trazado al buffer de impresora Draw.End END PUBLIC SUB Button5_Click() ME.Close END PUBLIC SUB tabla_Click() END PUBLIC SUB Button6_Click() DIM fila AS Integer coneccion.asisresul = coneccion.asiscon.Exec("Select *from asistencia_asesores") fila = 0 DO WHILE coneccion.asisresul.Available tabla.Rows.Insert(fila) tabla[fila, 0].Text = coneccion.asisresul["ID"] tabla[fila, 1].Text = coneccion.asisresul["codigo"] tabla[fila, 2].Text = coneccion.asisresul["cedula"] tabla[fila, 3].Text = coneccion.asisresul["nombres"] tabla[fila, 4].Text = coneccion.asisresul["apellidos"] tabla[fila, 5].Text = coneccion.asisresul["direccion"] tabla[fila, 6].Text = coneccion.asisresul["telefonos"] tabla[fila, 7].Text = coneccion.asisresul["sexo"] tabla[fila, 8].Text = coneccion.asisresul["programa"] tabla[fila, 9].Text = coneccion.asisresul["fecha_ingreso"] tabla[fila, 10].Text = coneccion.asisresul["fecha_asistencia"] tabla[fila, 11].Text = coneccion.asisresul["dias_semana"] tabla[fila, 12].Text = coneccion.asisresul["hora_entrada"] tabla[fila, 13].Text = coneccion.asisresul["hora_salida"] coneccion.asisresul.MoveNext() fila = fila + 1 LOOP tabla.Refresh END PUBLIC SUB Button7_Click() tabla.Clear END [/code] Si quieren algo mas me dicen y les paso lo demás ok.