Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/09/2007, 13:25
Avatar de SILVI85
SILVI85
 
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 17 años, 3 meses
Puntos: 1
Pregunta Re: Ayuda con FPDF

He conseguido hacer esto pero me lo hace con datos que coge de un array aleatorio y yo quiero que los datos que ponga en la tabla sean de un archivo .txt

Este es le codigo mc_table.php:
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;
}
}
?>
y ex.php:

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();
?>
El ejemplo se puede ver aquí: http://www.fpdf.org/en/script/ex3.pdf

Como puedo hacerlo con datos obtenidos del archivo .txt? Gracias