Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [php] generare pdf con classe fpdf

    vi posto il codice...magari c'e' qualche buona anima che mi sa spiegare perke' mi stampa tutto il contenuto dell'array nella prima colonna invece di stamparlo in ordine...

    ex.php:

    Codice PHP:
    <?php
    define
    ('FPDF_FONTPATH','font/');
    require(
    'mc_table.php');

    $connessione mysql_connect("localhost""""")
    or die(
    "Connessione non riuscita: " mysql_error());   
    mysql_select_db('prev1'$connessione);
    $result=mysql_query("select * from preventivo ");

    function 
    GenerateSentence($result)
    {
        
    $nb=rand(1,10);
        
    $s='';
        for(
    $i=1;$i<=$nb;$i++)
            
    $s.=GenerateWord($result);
        return 
    $s;
    }


    function 
    GenerateWord($result)
    {

        while(
    $row mysql_fetch_object($result))
        {
                
    $col_qta[] = $row->Quantita;
                
    $col_cod[] = $row->Codice;
                   
    $col_voce[] =$row->Voce;
                
    $col_v1[] = $row->Var1;
                
    $col_v2[] = $row->Var2;
                
    $col_pre[] = $row->Prezzo;
                
    $col_tot[] = $row->Totale;
        }
        for(
    $i=0,$dim=sizeof($_POST['Codice']);$i<=$dim;$i++)
            {
                
                    
    $w[$i].=$col_qta[$i].$col_cod[$i].$col_voce[$i].$col_v1[$i].$col_v2[$i].$col_pre[$i].$col_tot[$i];    
            
            }
        
        
        
        return 
    $w;
    }
    $pdf=new PDF_MC_Table();
    $pdf->Open();
    $pdf->AddPage();
    $pdf->SetTextColor(120120120); 
    $pdf->SetFont('Arial'''10); 
    $pdf->MultiCell(05'P.o.e.o'0'R'); 
    $pdf->SetFont('Arial'''10); 
    $pdf->MultiCell(05'Data: ___ / ___ / _____'0'L'); 
    $pdf->SetFont('Arial'''10); 
    $pdf->MultiCell(05'Azienda: _____________________'0'L'); 
    $pdf->SetFont('Arial'''10); 
    $pdf->MultiCell(05'P.iva:________________________'0'L'); 
    $pdf->SetFont('Arial'''50); 
    $pdf->MultiCell(022"Preventivo"0'C'); 
    $pdf->SetFont('Arial'''10); 
    $pdf->MultiCell(05' Qta           Codice                                  Voce                                Var 1                         Var 2                Prezzo         Totale'0'L'); 
    $pdf->SetFont('Arial'''10); 
    $pdf->SetTextColor(000); 
    $pdf->SetFont('Arial'''12); 
    $pdf->SetFillColor(232,232,232);
    $pdf->SetFont('Arial','',8);
    $pdf->SetWidths(array(10,30,50,35,30,20,20));
    for(
    $i=0;$i<2;$i++)
        
    $pdf->Row(array(GenerateSentence($result),GenerateSentence($result),GenerateSentence($result),GenerateSentence($result),GenerateSentence($result),GenerateSentence($result),GenerateSentence($result),GenerateSentence($result)));
    mysql_close();
    $pdf->Output();
    ?>

    mc_table.php:

    Codice 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;
    }
    }
    ?>
    perke'?!?!?!??!

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    mo lo provo e poi ti dico

  4. #4
    e' un oggetto... non e' un'array....


    infatti io scorro un oggetto
    mysql_fetch_object ($result)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    Mi ero accorto ecco perchè ho midificato il messaggio. Scusa ho la febbre...

    L'ho sostituito con un array e ho ricopiato il codice di mc_table dal sito dell'fpdf... e funziona...

    Quello che ho preso da qua di mc_table non dava errore a prescindere.

    (quanti errori faccio oggi sant'iddio )

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    Codice PHP:
    define('FPDF_FONTPATH','font/');
    require(
    'mc_table.php');

    $result = array("Quantita"=>"200""Codice"=>"giuseppe");

    function 
    GenerateSentence($result)
    {
        
    $nb=rand(1,10);
        
    $s='';
        for(
    $i=1;$i<=$nb;$i++)
            
    $s.=GenerateWord($result);
        return 
    $s;
    }


    function 
    GenerateWord($result)
    {
        
    $col_qta $result['Quantita'];
        
    $col_cod $result['Codice'];     
        
    $w.=$col_qta.$col_cod;    
        return 
    $w;
    }
    $pdf=new PDF_MC_Table();
    $pdf->Open();
    $pdf->AddPage();
    $pdf->SetTextColor(120120120); 
    $pdf->SetFont('Arial'''10); 
    $pdf->MultiCell(05'P.o.e.o'0'R'); 
    $pdf->SetFont('Arial'''10); 
    $pdf->MultiCell(05'Data: ___ / ___ / _____'0'L'); 
    $pdf->SetFont('Arial'''10); 
    $pdf->MultiCell(05'Azienda: _____________________'0'L'); 
    $pdf->SetFont('Arial'''10); 
    $pdf->MultiCell(05'P.iva:________________________'0'L'); 
    $pdf->SetFont('Arial'''50); 
    $pdf->MultiCell(022"Preventivo"0'C'); 
    $pdf->SetFont('Arial'''10); 
    $pdf->MultiCell(05' Qta           Codice                                  Voce                                Var 1                         Var 2                Prezzo         Totale'0'L'); 
    $pdf->SetFont('Arial'''10); 
    $pdf->SetTextColor(000); 
    $pdf->SetFont('Arial'''12); 
    $pdf->SetFillColor(232,232,232);
    $pdf->SetFont('Arial','',8);
    $pdf->SetWidths(array(10,30,50,35,30,20,20));
    for(
    $i=0;$i<1;$i++)
        
    $pdf->Row(array(GenerateSentence($result),GenerateSentence($result)));

    $pdf->Output(); 
    Ecco quello che ho scritto io adesso per prova. Ciao e Giuseppe vanno su due colonne, prova.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    L'ultima cosa poi mi metto a letto:
    In GenerateWord tu restituisci un array completo che poi vai a concatenare alla stringa $s che restituisci in generate sentence.

    Quando usi Row usi in pratica array di array... e credo che sia questo che ti incasina la stampa. Row accetta in ingresso un array semplice...

    Vedi tu.. non mi rendo conto nemmeno se ho detto minkiate

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.