Foros del Web » Programando para Internet » PHP »

R&OS + PHPLOT - generar Reportes PDF con Graficos

Estas en el tema de R&OS + PHPLOT - generar Reportes PDF con Graficos en el foro de PHP en Foros del Web. Hola, utilizo dos clases - una para generar graficos(PHPLot) y la otra para generar PDF (R&OS). Lo que me gustaria realizar es crear un gráfico ...
  #1 (permalink)  
Antiguo 11/02/2008, 03:55
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
R&OS + PHPLOT - generar Reportes PDF con Graficos

Hola,
utilizo dos clases - una para generar graficos(PHPLot) y la otra para generar PDF (R&OS).

Lo que me gustaria realizar es crear un gráfico dentro un PDF!

Alguien tiene algun ejemplo/idea/ o cualquier cosa, de como puedo realizar esto?

Muchas Gracias de antemano!!!

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #2 (permalink)  
Antiguo 11/02/2008, 06:28
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 17 años
Puntos: 25
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

usa FPDF fpdf.org hay podras descargarte la clase y hacer buen uso de ella.

http://fpdf.org/en/tutorial/tuto2.htm

http://fpdf.org/en/tutorial/tuto2.php

saludos espero que te sirva de ayuda.
  #3 (permalink)  
Antiguo 11/02/2008, 08:37
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

Hola eddwinpaz,
gracias por la respuesta - pero busco una solución con las clases q estoy usando no con otras!!!!

- si necesitais codigo o alguna referencia pedirmela - he estado haciendo pruebas pero siempre me tira errores...


Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 11/02/2008, 09:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

Lo que necesitas es hacer que PHPLOT guarde la gráfica (ya generada) en un archivo temporal en el disco de tu server. Posteriormente usar las funciones de R&OS para insertar el gráfico en una parte del PDF.

Saludos.
  #5 (permalink)  
Antiguo 11/02/2008, 09:08
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

Cita:
Iniciado por GatorV Ver Mensaje
Lo que necesitas es hacer que PHPLOT guarde la gráfica (ya generada) en un archivo temporal en el disco de tu server. Posteriormente usar las funciones de R&OS para insertar el gráfico en una parte del PDF.
Saludos.
Ya ser q la idea es esa - y es lo q estoy probando - pero no consigo dar con la solucion.

Aqui es el archivo el cual genera la grafica - esta es una grafica de averias por mes de una base de datos de mantenimientos...
Código PHP:
<?
include ("./phplot.php");
error_reporting(E_ALL); 
//Definim objecte
$graph = new PHPlot(800,400);
//$graph->SetDataType("text_data");

//Definim els Titols
$graph->SetTitle('Averias / Actividades por Seccion');
//-------------------------------
$any $_GET['any'];
$anyp $any 1;
if (
$_GET['mes'] != 0){

    
$mes $_GET['mes'];
    
$wheremes " AND mes=$mes";
    
$groupmes ",mes";
    
//$graph->SetYTickIncrement(5);
     
}else{

    
$wheremes "";
    
$groupmes "";
    
//$graph->SetYTickIncrement(20);
}
//------------------
//Inicalitzem l'array
$data = array(); 
//------------------
//SQL -> Seccions - per cada seccio mostrarem les averies
$str_sec "SELECT id_seccio,seccio FROM seccio ORDER BY id_seccio";
$sql_sec mysql_query($str_sec) or die("Error Consulta Secciones: ".mysql_error());
while(
$res_sec mysql_fetch_row($sql_sec)){
    
// Variables seccio
    
$idseccio $res_sec[0];
    
$seccio   $res_sec['1'];
    
//SQL -> Averies - Any Actual
    
$str_averia  "SELECT count(*) FROM averies 
                    WHERE id_localitat = "
.$_SESSION['idlocalitat']."
                    AND id_seccio = "
.$idseccio." AND any = ".$any." ".$wheremes."
                    GROUP BY id_localitat, id_seccio, any "
.$groupmes."";
    
$sql_averia  mysql_query($str_averia) or die("Error SQL Averias: ".mysql_error());
    
$nreg_averia mysql_num_rows($sql_averia);
    
//-------------------------------
    //SQL -> Averies - Any Passat
    
$str_averiap  "SELECT count(*) FROM averies 
                    WHERE id_localitat = "
.$_SESSION['idlocalitat']."
                    AND id_seccio = "
.$idseccio." AND any = ".$anyp." ".$wheremes."
                    GROUP BY id_localitat, id_seccio, any "
.$groupmes."";
    
$sql_averiap mysql_query($str_averiap) or die("Error SQL Averias: ".mysql_error());
    
$nreg_averiap mysql_num_rows($sql_averiap);
    
//-------------------------------
    //SQL -> Activitats - Any Actual
    
$str_activitat  "SELECT count(*) FROM activitats 
                       WHERE id_localitat = "
.$_SESSION['idlocalitat']."
                       AND id_seccio = "
.$idseccio." AND any = ".$any." ".$wheremes."
                       GROUP BY id_localitat, id_seccio, any "
.$groupmes."";
    
$sql_activitat  mysql_query($str_activitat) or die("Error SQL Actividades: ".mysql_error());
    
$nreg_activitat mysql_num_rows($sql_activitat);
    
//-------------------------------
    //SQL -> Activitats - Any Passat
    
$str_activitatp  "SELECT count(*) FROM activitats 
                       WHERE id_localitat = "
.$_SESSION['idlocalitat']."
                       AND id_seccio = "
.$idseccio." AND any = ".$anyp." ".$wheremes."
                       GROUP BY id_localitat, id_seccio ,any "
.$groupmes."";
    
$sql_activitatp  mysql_query($str_activitatp) or die("Error SQL Actividades: ".mysql_error());
    
$nreg_activitatp mysql_num_rows($sql_activitatp);
    
//-------------------------------

    
if(($nreg_averia!=0)||($nreg_averiap!=0)||($nreg_activitat!=0)||($nreg_activitatp!=0)){
        
$res_averia     mysql_fetch_row($sql_averia);
        
$res_averiap     mysql_fetch_row($sql_averiap);
        
$res_activitat     mysql_fetch_row($sql_activitat);
        
$res_activitatp mysql_fetch_row($sql_activitatp);
    
$data[] = array($seccio,$res_averia[0],$res_averiap[0],$res_activitat[0],$res_activitatp[0]); 
    }

}
//fi While secciones
mysql_free_result($sql_averia);
mysql_free_result($sql_averiap);
mysql_free_result($sql_activitat);
mysql_free_result($sql_activitatp);
mysql_free_result($sql_sec);
/*
echo "<pre>";
print_r($data);
echo "<pre>";
/**/
$graph->SetDataValues($data);
$graph->SetYTitle('Averias / Actividades');
$graph->SetLegend("Av.$any");
$graph->SetLegend("Av.$anyp");
$graph->SetLegend("Ac.$any");
$graph->SetLegend("Ac.$anyp");
//$graph->SetLegendPixels(1,340);
//Draw it
$graph->DrawGraph();
?>
pero no ser como incluirlo con las funciones de la clase R&OS - supongo q sera con la funcion ezImage pero no consigo q ruede...

a ver si me podeis hechar una ayudita mas compleja!


gracias de antemano,

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #6 (permalink)  
Antiguo 11/02/2008, 09:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

Por lo que veo Phplot no tiene opciones para guardar asi que tienes que capturar todo el contenido y guardarlo en un archivo, prueba hacer algo asi:
Código PHP:
ob_start();
$graph->DrawGraph();
$pic ob_get_clean();

$fh fopen"/graficas/archivo.png""w" );
fwrite$fh$pic );
fclose$fh ); 
Así podrás almacenar el resultado en un archivo que posteriormente podrás insertar usando ezImage.

Saludos.
  #7 (permalink)  
Antiguo 11/02/2008, 09:45
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

Hola de nuevo!!!

Ahora si - Muchas Gracias GatorV funciona de maravilla

Estaba justamente atracando en exportar el archivo - yo llamava directamente al archivo PHP q genera el grafico.

aqui dejo el codigo por si alguien cae en lo mismo!
Código PHP:
<?php 
require("../../aut_verifica.inc.php"); 
error_reporting(E_ALL); 
include(
'../funcions/class.ezpdf.php'); 
//$pdf = new Creport('a4','portrait');
$pdf = & new Cezpdf('a4','portrait'); 
$pdf->selectFont('../funcions/fonts/Helvetica'); 
$pdf->ezStartPageNumbers(570,18,10,'','{PAGENUM} de {TOTALPAGENUM}',1); 

//AQUI LLAMO LA IMAGEN 
$pdf->ezImage("./archivo.png");

if (isset(
$d) && $d){ 
    
$pdfcode $pdf->ezOutput();  //Necesari xq funcioni ezStartPageNumbers 
    
$pdfcode str_replace('\n','\n<br>',htmlspecialchars($pdfcode)); 
    echo 
'<html><body>'
    echo 
trim($pdfcode); 
    echo 
'</body></html>'
} else { 
    
$pdf->ezStream();  //Necesari xq funcioni ezStartPageNumbers 
}
?>
Saludos y muchas Gracias!!!
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 12/02/2008 a las 03:57
  #8 (permalink)  
Antiguo 12/02/2008, 03:56
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

Pruebas en servidor erroneas -

Al subirlo al servidor - al crear el PDF no me muestra la imagen, me crea el archivo PDF pero sin la iamgen, no me da ningun tipo de error ni nada, y si cojo la imagen creada y la intento abrir con el Photoshop me da el siguiente error: No se ha podido completar la operación. La firma interna del archivo no es correcta, cosa q en Local no me pasa...

Alguna idea de que puede estar pasando?

PD:No ser si sera influyente pero en local trabajo con windows - y el servidor es Linux Debian-

EDITADO : si lo abro como un txt al principio sale este error:
Código:
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /var/www/arcadie/controlmaquines/maquines/grafics/phplot.php:1104) in <b>/var/www/arcadie/controlmaquines/maquines/grafics/phplot.php</b> on line <b>1090</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /var/www/arcadie/controlmaquines/maquines/grafics/phplot.php:1104) in <b>/var/www/arcadie/controlmaquines/maquines/grafics/phplot.php</b> on line <b>1091</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /var/www/arcadie/controlmaquines/maquines/grafics/phplot.php:1104) in <b>/var/www/arcadie/controlmaquines/maquines/grafics/phplot.php</b> on line <b>1092</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /var/www/arcadie/controlmaquines/maquines/grafics/phplot.php:1104) in <b>/var/www/arcadie/controlmaquines/maquines/grafics/phplot.php</b> on line <b>1093</b><br />
<br />
y luego todo de simbolos!!!!

El codigo q hay en la class de PHPLOT en las linias q me da el error es el siguiente:
Código PHP:
// Browser cache stuff submitted by Thiemo Nagel
        
if ( (! $this->browser_cache) && (! $this->is_inline)) {
            
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
            
header('Last-Modified: ' gmdate('D, d M Y H:i:s') . 'GMT');
            
header('Cache-Control: no-cache, must-revalidate');
            
header('Pragma: no-cache');
        } 
he mirado q no hayan espacios y fallos basicos.... y no se ver el q es...



Saludos y gracias de antemano!!!!
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 12/02/2008 a las 05:54
  #9 (permalink)  
Antiguo 12/02/2008, 09:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

Eso te esta indicando que ya se enviaron las cabeceras, asi que debes de verificar cual es el código que se esta enviando en la linea 1104, y en las lineas 1091 - 1094.

Saludos.
  #10 (permalink)  
Antiguo 12/02/2008, 09:52
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

Cita:
Iniciado por GatorV Ver Mensaje
Eso te esta indicando que ya se enviaron las cabeceras, asi que debes de verificar cual es el código que se esta enviando en la linea 1104, y en las lineas 1091 - 1094.
Saludos.
Edite el mensaje y lo puse - lo q me extraña q en local funcione perfectamente y en el servidor me tire ese error!

PD: en local trabajo con la version de PHP 5.2.4 y en el server 4.4.8


Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #11 (permalink)  
Antiguo 12/02/2008, 09:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

¿Cual es la linea 1104?

Saludos.
  #12 (permalink)  
Antiguo 12/02/2008, 10:02
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

La linia del error esen la cabecera de content-type - Header('Content-type: image/png');
Código PHP:
 case 'png':
            if (! 
$this->is_inline) {
               
Header('Content-type: image/png');
            }
            if (
$this->is_inline && $this->output_file != '') {
                
ImagePng($this->img$this->output_file);
            } else {
                
ImagePng($this->img);
            }
            break; 
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #13 (permalink)  
Antiguo 12/02/2008, 12:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

Es muy raro al parecer, esta enviando la cabecera de que es un archivo PNG, Luego manda la imagen al explorador y posteriormente envía la cabecera de expiración por lo que te marca error.

Ahora según veo la clase ya tiene opciones para guardar directamente prueba en lugar del código que te había dado algo así:
Código PHP:
$graph->is_inline true;
$graph->output_file "/grafica.png";
$graph->DrawGraph(); 
Saludos.
  #14 (permalink)  
Antiguo 18/02/2008, 01:52
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Re: R&OS + PHPLOT - generar Reportes PDF con Graficos

Hola GatorV,
antetodo muchas gracias por tu continuidad en el tema y ayudarme a solucionar el problema definitivamente!!!!

Muchas gracias!!!

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 4 personas




La zona horaria es GMT -6. Ahora son las 21:58.