Foros del Web » Programando para Internet » PHP »

Problemas con celdas en fpdf

Estas en el tema de Problemas con celdas en fpdf en el foro de PHP en Foros del Web. Buenas Foro Tengo un problema con la libreria fpdf, estoy desarrollando una factura pero el problema se me presento al momento de mostrar el detalle ...
  #1 (permalink)  
Antiguo 09/12/2012, 15:34
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Pregunta Problemas con celdas en fpdf

Buenas Foro

Tengo un problema con la libreria fpdf, estoy desarrollando una factura pero el problema se me presento al momento de mostrar el detalle de los productos he logrado poder acomodar los datos del concepto hacia adelante pero como la cantidad esta antes del concepto no se acomoda a la altura del concepto.

Asi es como quisiera que se viera
cantidad | concepto | precio | importe
---------- --------- ------- ---------
---------- --------- ------- ---------
---------- --------- ------- ---------

y a mi me lo muestra asi

cantidad | concepto | precio | importe
----------
--------- ------- ---------
--------- ------- ---------
--------- ------- ---------

Es decir la cantidad se queda arriba pero el concepto y lo demas se baja para adecuarse como puedo solucionar esto

este es mi codigo donde creo esa parte

Código PHP:
Ver original
  1. if ($d1!=""){
  2.    
  3.     $pdf->Cell(30,5,"$".number_format($precio1, 2, '.', ','),'L',0,'C');
  4.     $pdf->Cell(1,4,"",0,0,'C');
  5.     $posy1=$pdf->GetY();//posición antes de escribir concepto
  6.     $pdf->MultiCell(105,5,"\n".utf8_decode($d1),"L",'L');
  7.     $posy2=$pdf->GetY();
  8.     $posX2=$pdf->GetX();//posicion despues de escribir concepto
  9.     $dif_y = $posy2-$posy1;//obtengo alto de las siguientes celdas
  10.     $pdf->SetY($posy1);
  11.     $pdf->SetX(145);//reposiciono Y y X despues del concepto, 10 de margen en x
  12.     $pdf->Cell(2,4,"",0,0,'C');
  13.     $pdf->Cell(30,$dif_y,$cantidad1." unidad1",'L',0,'C');
  14.     $pdf->Cell(1,4,"",0,0,'C');
  15.     $pdf->Cell(30,$dif_y,"$".number_format($monto1, 2, '.', ','),'LR',1,'C');}
  16.    
  17.     //cerrar tabla de conceptos
  18.     $h = 190-($pdf->GetY());
  19.     $pdf->Cell(30,$h," ",'LB',0,'C');
  20.     $pdf->Cell(1,4,"",0,0,'C');
  21.     $pdf->Cell(105,$h," ",'LB',0,'C');
  22.     $pdf->Cell(1,4,"",0,0,'C');
  23.     $pdf->Cell(30,$h," ",'LB',0,'C');
  24.     $pdf->Cell(1,4,"",0,0,'C');
  25.     $pdf->Cell(30,$h," ",'LRB',1,'C');


Soy novato con esta libreria realmente no se mucho de ella y no se manejar muy bien las cordenadas de fpdf

De antemano muchas gracias...
__________________
Lo imposible solo cuesta un poco mas
  #2 (permalink)  
Antiguo 10/12/2012, 08:46
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Problemas con celdas en fpdf

Hola Jandrogdz!

No se si esto te ayude, pero cuando utilice hace un tiempo la librería fpdf al dibujar las tablas lo hice en html y lo puse dentro de un for para cargar todos los datos, de esta manera es más fácil ver lo que estas haciendo....

Código HTML:
Ver original
  1. <table width="100%">
  2.     <?php
  3.         $num = 1;
  4.                
  5.                
  6.                $productos=$lista->filtrar_productos_marcados();
  7.                 $contador=1;
  8.                 for($x=0;$x<sizeof($productos);$x++)
  9.                {
  10.                    
  11.                     $total_parcial[$x] = $_POST["total_parcial".($x)];
  12.                     $cantidad[$x] = $_POST["cantidad".($x)];
  13.                ?>
  14.                
  15.         <tr>
  16.             <td align="center" width="6%"><?php echo $num; ?></td>
  17.             <td align="center" width="10%"><?php echo $cantidad[$x] ; ?></td>
  18.             <td align="center" width="10%"><?php echo $productos[$x]["codigo"]; ?></td>
  19.             <td width="48%"><?php echo $productos[$x]["descripcion"]; ?></td>
  20.             <td align="center" width="14%"><?php echo $productos[$x]["precio_unit"]; ?></td>
  21.             <td align="center" width="10%"><?php echo $total_parcial[$x] ; ?></td>
  22.         </tr>            
  23.    
  24.     <?php
  25.         $num++;
  26.         } ?>
  27.        

... y además podes manejar los estilos con un archivo CSS
  #3 (permalink)  
Antiguo 10/12/2012, 09:10
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Pregunta Respuesta: Problemas con celdas en fpdf

Gracias por contestar pero como meterias ese codigo yo intente hacerlo asi pero no me funciona no me muestra el pdf
__________________
Lo imposible solo cuesta un poco mas
  #4 (permalink)  
Antiguo 10/12/2012, 09:42
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problemas con celdas en fpdf

Ok he logrado que me aparesca como queria pero ahora me enfrento a otro problema con las coordenadas me da el salto de linea y todo esta alineado la situacion es que cuando escribo conceptos de mas de una linea se encima la siguiente linea con el otro concepto es decir si escribo dos lineas en el primer producto en el segundo se mezcla la primer linea del segundo producto con la segunda linea del primero como puedo resolver esto

Asi es como tengo el codigo:
Código PHP:
Ver original
  1. if ($d1!=""){
  2.     $y = $pdf->GetY();
  3.     $pdf->Cell(30,5,"$".number_format($precio1, 2, '.', ','),'L',0,'C');
  4.     $pdf->Cell(1,4,"",0,0,'C');
  5.    
  6.     $pdf->MultiCell(105,5,utf8_decode($d1));
  7.     $pdf->SetXY(145,$y);
  8.     $pdf->Cell(2,4,"",0,0,'C');
  9.     $pdf->Cell(30,5,$cantidad1." unidad1",'L',0,'C');
  10.     $pdf->Cell(1,4,"",0,0,'C');
  11.     $pdf->Cell(30,5,"$".number_format($monto1, 2, '.', ','),'LR',1,'C');}
__________________
Lo imposible solo cuesta un poco mas
  #5 (permalink)  
Antiguo 10/12/2012, 10:11
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Problemas con celdas en fpdf

Perdón me olvide de completar el ejemplo

Resulta que fpdf también te permite escribir todo lo que quieras en formato html , darle estilo con CSS, lo guarda en una variable, lo procesa y lo exporta como pdf, nose, para mi fue mucho más facil hacerlo asi.

Acá te dejo el código completo para que veas como funciona:

Código PHP:
ob_start(); // Inicia el flujo del html

//Aca escribis todo en html como estaba en el mensaje anterior

$html =ob_get_clean(); // Finaliza el flujo de html 

$html utf8_encode($html);


define("_MPDF_TEMP_PATH"'MPDF53/');
include(
'MPDF53/mpdf.php');

// crea un nuevo contenedor PDF en formato A4 con orientación personalizada
$mpdf=new mPDF('pt','A4',3,'',8,8,5,14,9,9,'P');

$mpdf->allow_charset_conversion=true;
// permite la conversión (opcional)
$mpdf->charset_in='UTF-8';

// carga la hoja de estilo - MAGIA!!!
$stylesheet file_get_contents('./estilos/imp_pdf_presupuesto.css');

// incorpora la hoja de estilo al PDF
// El parámetro 1 dice que este es un archivo css/style y deberá interpretarlo como tal
$mpdf->WriteHTML($stylesheet,1);

// incorpora el cuerpo (todo lo escrito en html) al PDF 
$mpdf->WriteHTML($html);


// define el nombre del archivo PDF
$arquivo 'presupuestos/'.$cliente.'_'.date("j_m_y").'.pdf';
// genera el pdf
$mpdf->Output($arquivo,'F');

exit(); 
para ver más opciones y detalles de los parámetros de cada función tendrías que revisar el manual http://www.fpdf.org/

Saludos
  #6 (permalink)  
Antiguo 10/12/2012, 10:25
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problemas con celdas en fpdf

Como seria el codigo completo esque no entendi bien como quedaria
__________________
Lo imposible solo cuesta un poco mas
  #7 (permalink)  
Antiguo 10/12/2012, 10:48
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Problemas con celdas en fpdf

Este seria el archivo completo sacando las llamadas a la base de datos que no vienen al caso.

presupuesto_pdf.php
Código PHP:
<?php

ob_start
(); // Inicia el flujo del html 
?>

<h1>Puedo poner un título</h1>
<hr/>
          
<h2 style="text-align:center;">subtítulo</h2>
<div id="pantalla">


    <div id="listo">
        <!--En mi caso yo use esta forma de poner los encabezados a las tablas-->
        <div id="title_table" class="bordes">
            <div class="cuadro_1">M</div>
            <div class="cuadro_2">Item</div>
            <div class="cuadro_3">Cantidad</div>
            <div class="cuadro_4">C&oacute;digo</div>
            <div class="cuadro_5">Descripci&oacute;n</div>
            <div class="cuadro_6">Precio Unitario</div>
            <div class="cuadro_7">Total</div>
        </div>
        
<table width="100%"> 
    <?php 
        $num 
1;
                
                
                
$productos=$lista->productos();
                
//acá cargo los datos por medio de un for
                
for($x=0;$x<sizeof($productos);$x++)
                {
                    
                    
$total_parcial[$x] = $_POST["total_parcial".($x)];
                    
$cantidad[$x] = $_POST["cantidad".($x)];
                
?>
                
        <tr>
            <td align="center" width="6%"><?php echo $num?></td>
            <td align="center" width="10%"><?php echo $cantidad[$x] ; ?></td>
            <td align="center" width="10%"><?php echo $productos[$x]["codigo"]; ?></td>
            <td width="48%"><?php echo $productos[$x]["descripcion"]; ?></td>
            <td align="center" width="14%"><?php echo $productos[$x]["precio_unit"]; ?></td>
            <td align="center" width="10%"><?php echo $total_parcial[$x] ; ?></td>
        </tr>            
    
    <?php 
        
        
?>
        
</table>

<div id="fila_total">
    
        <div class="cuadro_7">
            <?php echo $total ?>
        </div>
        <div class="cuadro_6">TOTAL</div>
    </div>
    
      
</div>


<?php


$html 
=ob_get_clean(); // Finaliza el flujo de html  

$html utf8_encode($html); 


define("_MPDF_TEMP_PATH"'MPDF53/'); 
include(
'MPDF53/mpdf.php'); 

// crea un nuevo contenedor PDF en formato A4 con orientación personalizada 
$mpdf=new mPDF('pt','A4',3,'',8,8,5,14,9,9,'P'); 

$mpdf->allow_charset_conversion=true
// permite la conversión (opcional) 
$mpdf->charset_in='UTF-8'

// carga la hoja de estilo - MAGIA!!! 
$stylesheet file_get_contents('./estilos/imp_pdf_presupuesto.css'); 

// incorpora la hoja de estilo al PDF 
// El parámetro 1 dice que este es un archivo css/style y deberá interpretarlo como tal 
$mpdf->WriteHTML($stylesheet,1); 

// incorpora el cuerpo (todo lo escrito en html) al PDF  
$mpdf->WriteHTML($html); 


// define el nombre del archivo PDF 
$arquivo 'presupuestos/'.$cliente.'_'.date("j_m_y").'.pdf'
// genera el pdf 
$mpdf->Output($arquivo,'F'); 

exit();  

?>
Espero se entienda

  #8 (permalink)  
Antiguo 10/12/2012, 11:17
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problemas con celdas en fpdf

donde puedo descargar la clase que me mencionas descargue una pero me marca error
__________________
Lo imposible solo cuesta un poco mas
  #9 (permalink)  
Antiguo 10/12/2012, 12:22
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Problemas con celdas en fpdf

http://www.fpdf.org/

Esa es la página oficial, podes descargar la clase, el manual, ver ejemplos y tutoriales.

Etiquetas: celdas, fpdf, tabla
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 16:34.