Foros del Web » Programando para Internet » PHP »

Reporte PDF con FPDF, error

Estas en el tema de Reporte PDF con FPDF, error en el foro de PHP en Foros del Web. Hola a todos, me acabo de registrar a este foro para obtener ayuda respecto al generar un reporte en PDF con la liberia FPDF, Les ...
  #1 (permalink)  
Antiguo 13/04/2014, 19:08
Gu4diana
Invitado
 
Mensajes: n/a
Puntos:
Reporte PDF con FPDF, error

Hola a todos, me acabo de registrar a este foro para obtener ayuda respecto al generar un reporte en PDF con la liberia FPDF,

Les comparto mi código, y la serie de errores que me salen al querer verlo.

Código:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Reporte Libros Prestados</title>
</head>

<?php
require('fpdf/fpdf.php');
require('conexiones/ConBiblioteca.php');
class PDF extends FPDF
{
var $widths;
var $aligns;

function SetWidths($w)
{
    //Set the array of column widths
    $this->widths=$w;
}

function SetAligns($a)
{
    //Set the array of column alignments
    $this->aligns=$a;
}

function Row($data)
{
    //Calculate the height of the row
    $nb=0;
    for($i=0;$i<count($data);$i++)
        $nb=max($nb,$this->NbLines($this->widths[$i],$data[$i]));
    $h=5*$nb;
    //Issue a page break first if needed
    $this->CheckPageBreak($h);
    //Draw the cells of the row
    for($i=0;$i<count($data);$i++)
    {
        $w=$this->widths[$i];
        $a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';
        //Save the current position
        $x=$this->GetX();
        $y=$this->GetY();
        //Draw the border
        $this->Rect($x,$y,$w,$h);
        //Print the text
        $this->MultiCell($w,5,$data[$i],0,$a);
        //Put the position to the right of the cell
        $this->SetXY($x+$w,$y);
    }
    //Go to the next line
    $this->Ln($h);
}

function CheckPageBreak($h)
{
    //If the height h would cause an overflow, add a new page immediately
    if($this->GetY()+$h>$this->PageBreakTrigger)
        $this->AddPage($this->CurOrientation);
}

function NbLines($w,$txt)
{
    //Computes the number of lines a MultiCell of width w will take
    $cw=&$this->CurrentFont['cw'];
    if($w==0)
        $w=$this->w-$this->rMargin-$this->x;
    $wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
    $s=str_replace("\r",'',$txt);
    $nb=strlen($s);
    if($nb>0 and $s[$nb-1]=="\n")
        $nb--;
    $sep=-1;
    $i=0;
    $j=0;
    $l=0;
    $nl=1;
    while($i<$nb)
    {
        $c=$s[$i];
        if($c=="\n")
        {
            $i++;
            $sep=-1;
            $j=$i;
            $l=0;
            $nl++;
            continue;
        }
        if($c==' ')
            $sep=$i;
        $l+=$cw[$c];
        if($l>$wmax)
        {
            if($sep==-1)
            {
                if($i==$j)
                    $i++;
            }
            else
                $i=$sep+1;
            $sep=-1;
            $j=$i;
            $l=0;
            $nl++;
        }
        else
            $i++;
    }
    return $nl;
}

/*function Header()
{
	$this->SetFont('Arial','',10);
	$this->Text(20,14,'Reporte de Libros Prestados',0,'C', 0);
	$this->Ln(30);
}
}*/	
function Header()
{
    // Select Arial bold 10
    $this->SetFont('Arial','B',10);
    // Move to the right
    $this->Cell(80);
    // Framed title
    $this->Cell(20,14,'Reporte de Libros Prestados',1,0,'C');
    // Line break
    $this->Ln(30);
}
}
	$pdf=new PDF('L','mm','Letter');
	//$pdf->Open();
	$pdf->AddPage();
	$pdf->SetMargins(20,20,20);
	$pdf->Ln(10);

	$pdf->SetWidths(array(65, 60, 55, 50, 20));
	$pdf->SetFont('Arial','B',10);
	$pdf->SetFillColor(85,107,47);
    $pdf->SetTextColor(255);

		for($i=0;$i<1;$i++)
			{
				$pdf->Row(array('Nombre', 'Seccion', 'Titulo', 'Autor', 'Tipo', 'FechaPrestamo','FechaDevolucion'));
			}
	$strConsulta = "SELECT * FROM prestamos ORDER BY FechaPrestamo";
	//$strConsulta = "SELECT Nombre, Seccion, Titulo, Autor, Tipo, FechaPrestamo, FechaDevolucion FROM prestamos";
	
	//$prestamos = mysql_query($strConsulta);
	
	//$fila = mysql_fetch_array($prestamos);
	
	$historial = mysql_query($strConsulta);
	$numfilas = mysql_num_rows($historial);
	
	for ($i=0; $i<$numfilas; $i++)
		{
			$fila = mysql_fetch_array($historial);
			$pdf->SetFont('Arial','',10);
			
			//Este if es para los colores entre linea
			if($i%2 == 1)
			{
				$pdf->SetFillColor(153,255,153);
    			$pdf->SetTextColor(0);
				$pdf->Row(array($fila['Nombre'], $fila['Seccion'], $fila['Titulo'], $fila['Autor'], $fila['Tipo'] , $fila['FechaPrestamo'], $fila['FechaDevolucion']));
			}
			else
			{
				$pdf->SetFillColor(102,204,51);
    			$pdf->SetTextColor(0);
				$pdf->Row(array($fila['Nombre'], $fila['Seccion'], $fila['Titulo'], $fila['Autor'], $fila['Tipo'] , $fila['FechaPrestamo'], $fila['FechaDevolucion']));
			}
		}
$pdf->Output();
?>
<body>
</body>
</html>
La primera parte fue tomada de aqui para ajustar el tamaño

[URL="http://www.fpdf.org/en/script/script3.php"]http://www.fpdf.org/en/script/script3.php[/URL]

el ejemplo con el que me base fue este

[URL="http://www.codedrinks.com/crear-un-reporte-con-fpdf-usando-php-y-mysql/?s=fpdf"]http://www.codedrinks.com/crear-un-reporte-con-fpdf-usando-php-y-mysql/?s=fpdf[/URL]

El problema esta en que no se muestra el documento y me tira bastantes errores.



Espero me puedan ayudar, la verdad ya llevo todo este dia intentando ver la causa y no doy con ella.

Gracias a todos, y espero yo también poder ayudar con mis aportes.
  #2 (permalink)  
Antiguo 13/04/2014, 21:51
 
Fecha de Ingreso: enero-2014
Mensajes: 7
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: Reporte PDF con FPDF, error

Hola,

Ejecuté el código y si me generó un archivo PDF, el formato seguramente no es el que debe quedar al final, pero si me generó un PDF, con algunos ajustes.

Si utilizas el método Output no puedes enviar ninguna otra salida al navegador, y en tu archivo todo el código html antes de la marca de inicio de código de php, y después de la marca de fin, se van al navegador. Es decir, tu archivo debe comenzar con <?php, y terminar con ?>, y no enviar ninguna otra salida que no sea $pdf->Output();

Otra opción es enviar la salida a un archivo, depende lo que requieras, esto lo puedes hacer simplemente indicando el archivo:

$pdf->Output('/temporal/salida.pdf');

Por lo demás, es solo cuestión de ajustar el formato y la salida.
  #3 (permalink)  
Antiguo 14/04/2014, 11:39
Gu4diana
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Reporte PDF con FPDF, error

no se si puedas contactarme para que me ayudes, pues sigo recibiendo error en los row y array.

[email protected]

Gracias por tu ayuda.

Etiquetas: fpdf, mysql, mysql+php
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:36.