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

    [ Classe FPDF ] Creare una tabella

    ciao a tutti stamattina mi trovo a dove creare al volo una pagina in PDF.

    Sto usando come al solito la Classe Free " FPDF "

    ora ho un piccolo problema di sorgente dati:

    tramite query creo a video una tabella contenente una fattura con sopra il logo della ditta.

    ora tramite il tasto stampa devo generare il PDF.

    Ho preso questo esempio che ho trovato in giro.

    Codice PHP:
    ob_start();
    include(
    "fpdf153/fpdf.php");

    class 
    PDF extends FPDF
    {
    //Load data
    function LoadData($file)
    {
        
    //Read file lines
        
    $lines=file($file);
        
    $data=array();
        foreach(
    $lines as $line)
            
    $data[]=explode(';',chop($line));
        return 
    $data;
    }

    //Simple table
    function BasicTable($header,$data)
    {
        
    //Header
        
    foreach($header as $col)
            
    $this->Cell(40,7,$col,1);
        
    $this->Ln();
        
    //Data
        
    foreach($data as $row)
        {
            foreach(
    $row as $col)
                
    $this->Cell(40,6,$col,1);
            
    $this->Ln();
        }
    }

    //Better table
    function ImprovedTable($header,$data)
    {
        
    //Column widths
        
    $w=array(40,35,40,45);
        
    //Header
        
    for($i=0;$i<count($header);$i++)
            
    $this->Cell($w[$i],7,$header[$i],1,0,'C');
        
    $this->Ln();
        
    //Data
        
    foreach($data as $row)
        {
            
    $this->Cell($w[0],6,$row[0],'LR');
            
    $this->Cell($w[1],6,$row[1],'LR');
            
    $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R');
            
    $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R');
            
    $this->Ln();
        }
        
    //Closure line
        
    $this->Cell(array_sum($w),0,'','T');
    }

    //Colored table
    function FancyTable($header,$data)
    {
        
    //Colors, line width and bold font
        
    $this->SetFillColor(255,0,0);
        
    $this->SetTextColor(255);
        
    $this->SetDrawColor(128,0,0);
        
    $this->SetLineWidth(.3);
        
    $this->SetFont('','B');
        
    //Header
        
    $w=array(40,35,40,45);
        for(
    $i=0;$i<count($header);$i++)
            
    $this->Cell($w[$i],7,$header[$i],1,0,'C',1);
        
    $this->Ln();
        
    //Color and font restoration
        
    $this->SetFillColor(224,235,255);
        
    $this->SetTextColor(0);
        
    $this->SetFont('');
        
    //Data
        
    $fill=0;
        foreach(
    $data as $row)
        {
            
    $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
            
    $this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
            
    $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R',$fill);
            
    $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R',$fill);
            
    $this->Ln();
            
    $fill=!$fill;
        }
        
    $this->Cell(array_sum($w),0,'','T');
    }
    }

    $pdf=new PDF();
    //Column titles
    $header=array('Country','Capital','Area (sq km)','Pop. (thousands)');
    //Data loading
    $data=$pdf->LoadData('countries.txt');  //DEVO SOSTITUIRE QUESTA FONTE DATI  
    $pdf->SetFont('Arial','',14);
    $pdf->AddPage();
    $pdf->BasicTable($header,$data);
    $pdf->AddPage();
    $pdf->ImprovedTable($header,$data);
    $pdf->AddPage();
    $pdf->FancyTable($header,$data);
    $pdf->Output();
    ?> 
    Questo script genera un PDF con 3 pagine la prima c'è solo una tabella grezza , la seconda una tabella solo con le linee esterne e la terza una tabella dove si alternano dei colori per distinguere le righe. VEDI

    Io devo sostituire la fonte countries.txt con la mia pagina.
    Non conosco la struttura del file countries.txt.
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    be se guardi la funzione loaddata puoi capire come è fatto il file di testo, sarà un file su più linee cosi:

    codice:
    Austria;Vienna;83859;8075
    ecc.
    Puoi cambiare la funzione loaddata per caricare da db o altro...

    ciao

  3. #3
    Perciò basta che dentro la funzione Load Data inserisco la query che stampa a video la fattura e dovrei essere a posto.

    Giusto?
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da Barman@83
    Perciò basta che dentro la funzione Load Data inserisco la query che stampa a video la fattura e dovrei essere a posto.

    Giusto?
    Basta che nella funzione load data ritorni un array cosi:

    codice:
    $data[0] = array('dato1', 'dato2', 'dato3', ...);
    $data[1] = array('dato1', 'dato2', 'dato3', ...);
    ecc..
    ciao

  5. #5
    ma per formattare i risultati come faccio?

    fin ora mi escono i risultati in tabella "modello phpMyAdmin"
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    non so se ho capito la tua domanda, ma il metodo FancyTable contiene un foreach sull'array restituito da loaddata, e per ogni cella ci sono le opzioni di formattazione (tipo bordo o carattere).

    ciao

  7. #7
    Ma se io imposto unn Form HTML e poi con POST invio le variabili ?

    Cosi posso sia creare gli Array al volo che salvarle su un TXT (meglio la prima )ma mi rimane sempre il problema della formattazione.
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  8. #8
    Originariamente inviato da gianiaz
    non so se ho capito la tua domanda, ma il metodo FancyTable contiene un foreach sull'array restituito da loaddata, e per ogni cella ci sono le opzioni di formattazione (tipo bordo o carattere).

    ciao
    ok ma io devo cambiare lo schema di tabella radicalmente perchè devo ottenere una impaginazione particolare "schema fattura commerciale" con il logo in alto.



    Fin ora ho creato tutte le tabelle "modello PhpMyAdmin " e creato il PDF per i report aziendali.

    Ora devo creare anche la fattura da stampare.
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da Barman@83
    ok ma io devo cambiare lo schema di tabella radicalmente perchè devo ottenere una impaginazione particolare "schema fattura commerciale" con il logo in alto.



    Fin ora ho creato tutte le tabelle "modello PhpMyAdmin " e creato il PDF per i report aziendali.

    Ora devo creare anche la fattura da stampare.
    In una situazione simile, ho esteso la classe riscrivendo l'header (che poi è la parte che si ripete in tutte le pagine), poi ho modificato il metodo fancytable per stampare le righe della fattura, mettendo i bordi dove volevo, infine il metodo footer per creare la parte di chiusura della fattura.

    In questo modo la paginazione ti permetterà di gestire solo la parte centrale.

    ciao

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.