Foros del Web » Programando para Internet » PHP »

fpdf con 2 colunnasy varias filas

Estas en el tema de fpdf con 2 colunnasy varias filas en el foro de PHP en Foros del Web. Hola a todos,estoy creadon un documento que precisa 2 columnas y varias filas, no se si usar cell o multicell lo he intentado con multicel ...
  #1 (permalink)  
Antiguo 21/02/2008, 11:03
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
fpdf con 2 colunnasy varias filas

Hola a todos,estoy creadon un documento que precisa 2 columnas y varias filas,
no se si usar cell o multicell lo he intentado con multicel pero no se como añadir las columnas. no uso cell por que los datos varian de tamaño y necesito que el marco dibujado vaya con el texto.

La verda es que no llevo mucho con fpdf, he realizado varios documento pero muy simple y de una sola paginas, esto se muestra como un reto para mi.

Una ayudita aver como lo realizo esto.
  #2 (permalink)  
Antiguo 21/02/2008, 12:48
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: fpdf con 2 colunnasy varias filas

he encontrado este codigo en la pagina de fpdf, pero no consigo enterderlo, no se donde introducir los datos, el fichero biene con unos ejemplo pero no lo entiendo alguien podria explicarmelo, gracias
Código PHP:
<?php
define
('FPDF_FONTPATH','font/');
require(
'mc_table.php');

function 
GenerateWord()
{
    
//Get a random word
    
$nb=rand(3,10);
    
$w='';
    for(
$i=1;$i<=$nb;$i++)
        
$w.=chr(rand(ord('a'),ord('z')));
    return 
$w;
}

function 
GenerateSentence()
{
    
//Get a random sentence
    
$nb=rand(1,10);
    
$s='';
    for(
$i=1;$i<=$nb;$i++)
        
$s.=GenerateWord().' ';
    return 
substr($s,0,-1);
}

$pdf=new PDF_MC_Table();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('Arial','',14);
//Table with 20 rows and 4 columns
$pdf->SetWidths(array(30,50,30,40));
srand(microtime()*1000000);
for(
$i=0;$i<20;$i++)
    
$pdf->Row(array(GenerateSentence(),GenerateSentence(),GenerateSentence(),GenerateSentence()));
$pdf->Output();
?>
y este es otro fichero que va incluido en el anterior

Código PHP:
<?php
require('fpdf.php');

class 
PDF_MC_Table 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>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;
}
}
?>
  #3 (permalink)  
Antiguo 22/02/2008, 09:23
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: fpdf con 2 colunnasy varias filas

uuuhhhh
nada que no me entero, me he descargado varios ejemplo pero na de na ya dentro de poco me volvere loco


:bor racho:
  #4 (permalink)  
Antiguo 22/02/2008, 09:53
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: fpdf con 2 colunnasy varias filas

Revisa esto...
Multicell de fpdf...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #5 (permalink)  
Antiguo 22/02/2008, 14:13
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: fpdf con 2 colunnasy varias filas

a eso ya le eche un vistaso me ha estado sirviendo para hacer parafos, incluso justificados todo marchaba bien hasta que necesito hacer esto: esque creo que multicell el margen es desde la izquierda hacia la derecha pero la izquierda nunca varia, o eso creo, o como se hace para separar multicell de la izquierda.
  #6 (permalink)  
Antiguo 22/02/2008, 16:09
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: fpdf con 2 colunnasy varias filas

Te refieres al espacio que existe tesde donde empieza la hoja hasta donde termina, si es eso usa los margins... Ahora un detalle con lo que mencionas dices que el ancho de las celdas cambiaran, eso no puede ser, ya que si eso sucede facilmente la tabla o celdas, saldrian de los margenes de la hoja, por que mejor no usas Cell, y delimitas el tamaño de la misma, y achicas un poco la letra...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #7 (permalink)  
Antiguo 22/02/2008, 16:51
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: fpdf con 2 colunnasy varias filas

si se puede, con el codigo que expuse se modifican las tables segun el textos que cotienen, pero no yo llego a comprenderlo.
He empezado a realizarlo con cell y pinta bien, aunque voy a modificar algunos codigos de blas paginas que lo llaman para evitar que el pdf se deforme.
  #8 (permalink)  
Antiguo 22/02/2008, 18:06
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: fpdf con 2 colunnasy varias filas

me quede estantaco ya no se seguir este es el codigo que llevaba hasta ahora que me quede bloqueado a las 0:54 horas despues de varias horas y quiero llorar......

Código PHP:
 /* Imprimir Proyecto creado por Francisco Antonio Moreno Perez , ayudado por desarrolloweb.com.
    ole el recre güeno por supuesto el recreativo de Huelva decano del futbol Español.
    
    */

require('fpdf.php');
require(
'mysql_table.php');
include (
"../conectar.php"); 
class 
PDF extends FPDF
{
function 
Header()
{
$idproyecto $_REQUEST['idproyecto'];
$this->SetFont('Arial','B',10);
$this->Cell(60);
$this->Cell(95,3,"BOLETIN DE INSTALACIÓN DE TELECOMUNICACIONES",B,0,C,0);
$this->Ln(20);
$this->MultiCell(195,3.5,"Nombre o Razón Social: …………………………….……………….......……...........………………………………… empresa instaladora de telecomunicaciones, inscrita en el Registro de Empresas Instaladoras de Telecomunicación de la Secretaría de Estado de Telecomunicaciones y para la Sociedad de la Información con el Nº…………. con domicilio social/laboral en: ……….................................………………………………… C.P.:……..Población:……….…………………………....... Provincia:……........…...…… NIF/CIF:…….....………..
Y en su nombre y representación: D/Dña.: ...…….……..…………………………………..........………………….. 
DECLARA:
Que ha ejecutado la realización de la instalación de telecomunicaciones, a continuación indicada, y que la misma ha sido realizada de acuerdo con las disposiciones vigentes y, en su caso, con las características indicadas en el Proyecto Técnico correspondiente.
"
,0,J);
$this->Ln(5);
//COMIENZO fila situacion
$this->Cell(60,25,"SITUACION DE LA INSTALACION",1,0,C);
$this->Cell(20,12,"",T,0);
$this->Cell(22,6,"Tipo de Via:",T,0);
$this->Cell(95,6,"Imprimir datos del tipo de la via",T,1);
$this->Cell(60);
$this->Cell(20,1,"Dirección:",0,1);
$this->Cell(60);
$this->Cell(20,12,"",0,0);
$this->Cell(22,6,"Nombre via:",0,0);
$this->Cell(95,6,"Imprimir datos del nombre de la via",0,1);
$this->Cell(60);
$this->Cell(19,6,"Localidad:",0,0);
$this->Cell(40,6,"Datos de la localidad",0,0);
$this->Cell(19,6,"Municipio:",0,0);
$this->Cell(30,6,"Datos del municipiio",0,1);
$this->Cell(60);
$this->Cell(9,6,"C.P.:",B,0);
$this->Cell(15,6,"12345600",B,0);
$this->Cell(19,6,"Provincia:",B,0);
$this->Cell(95,6,"Datos de la provincia",B,1);
//Fin primera fila comienzo fila propiedad
$this->Cell(60,40,"Propiedad",1,0,C);
$this->Cell(41,5,"Nombre o Razon Social:",0,0);
$this->Cell(25,5,"Datos de la Razon Social de Huelva o Madris",0,1);
$this->Cell(60);
$this->Cell(10,5,"C.I.F:",0,0);
$this->Cell(86,5,"x-44321456-F",0,1);
$this->Cell(60);
$this->Cell(20,12,"",0,0);
$this->Cell(22,6,"Tipo de Via:",0,0);
$this->Cell(95,6,"Imprimir datos del tipo de la via",0,1);
$this->Cell(60);
$this->Cell(20,1,"Dirección:",0,1);
$this->Cell(60);
$this->Cell(20,12,"",0,0);
$this->Cell(22,6,"Nombre via:",0,0);
$this->Cell(95,6,"Imprimir datos del nombre de la via",0,1);
$this->Cell(60);
$this->Cell(19,6,"Localidad:",0,0);
$this->Cell(40,6,"Datos de la localidad",0,0);
$this->Cell(19,6,"Municipio:",0,0);
$this->Cell(30,6,"Datos del municipiio",0,1);
$this->Cell(60);
$this->Cell(9,6,"C.P.:",0,0);
$this->Cell(15,6,"12345600",0,0);
$this->Cell(19,6,"Provincia:",0,0);
$this->Cell(30,6,"Datos de la provincia",0,1);
$this->Cell(60);
$this->Cell(17,5,"Teléfono:",B,0);
$this->Cell(25,5,"959230572000",B,0);
$this->Cell(9,5,"Fax:",B,0);
$this->Cell(86,5,"959230572000",B,1);
//fin fila propiedad comienzo descripcio
$this->Cell(60,10,"DESCRIPCIÓN",L,0,C);
$this->MultiCell(10,4,"Datos de la descripcion"); // este campo es variable es una descripcion y no se como realizarlo para que no mee joda el pdf
// tal y como esta ahora me jode el pdf
$this->Cell(60,10,"DE LA",L,2,C);
$this->Cell(60,10,"INSTALACIÓN O INTERVENCIÓN",L,0,C);


}
}
$pdf=new PDF();
$title='Impresion de Boletin';
$pdf->SetTitle($title);
$pdf->Output(); 
  #9 (permalink)  
Antiguo 22/02/2008, 21:30
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: fpdf con 2 colunnasy varias filas

He revisado tu codigo y el resultado y la verdad que no me convence, es preferible que utilices formatos pre-impresos y adaptes la informacion deseada, asi te ahorrasa dolores de cabeza mas adelante cuando se intente cambiar de formato...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #10 (permalink)  
Antiguo 23/02/2008, 05:18
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: fpdf con 2 colunnasy varias filas

lo tengo que hacer, por que trabajo con otras aplicaciones que no son mias y si que hacen el efecto de celdas auto deformable segun el texto. asi que seguire y seguire..... y lo contare......
  #11 (permalink)  
Antiguo 23/02/2008, 09:17
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: fpdf con 2 colunnasy varias filas

conseguido no como yo queria pero por ahora sirve, lo que he echo es clavar el campo descripcion asi:

// Escribo descripcion fijandola con SEtXY.
$this->SetXY(70,138);
$this->MultiCell(0,3.5,"Datos de la Descripcion");

con la funcion SetXY indico donde debe de empecar a escribir, asi dibujo la tabla y luego inserto descripcion aunque no esta, bien conseguido, por que si descripcion pasara el ancho que le ha dado en la tabla esta se montaria con los demas datos.

Por ahora me vale, toca estudiar un poca mas estas sentencias y hacer variables para que las tablas se modifiquen.

Gracias por la ayuda.
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 14:27.