Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867

    [FPDF] Tabella ad altezza fissa

    Ciao a tutti, vi espongo velocemente il mio problema....

    Ho un file pdf in cui creo una tabella con bordo visibile, e fino a qua tutto ok, solo che questa tabella dovrebbe essere sempre alta uguale indipendentemente dal testo che vado a metterci dentro.....

    Cioè se anche se io scrivo una riga sola la tabella deve essere alta 10 cm......

    Purtroppo se uso la funzione MultiCell settando l'altezza questa la attribuisce ad ognuna delle righe invece che alla tabella intera.....

    Spero di essermi spiegato e che qualcuno sappia aiutarmi.....

    No pvt per sollecitare risposte, grazie.

  2. #2
    non ho capito una cosa....

    tu hai una tabella contenente più righe, oppure è una tabella con una sola riga ...

    che io sappia la funzione MultiCell viene utilizzata per permettere i rientri, quindi l'altezza della riga è funzione della quantità di testo che vai a buttarci dentro....

    hai provato la funzione cell() ... facendo magari prima un controllo della quantità di testo che andrai a metterci dentro ???

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    ciao, grazie per l'interessamento, visto che ho risolto spiego come ho fatto, in maniera che possa servire a qualcun altro.

    in pratica io non lo so quanto testo ci sara' dentro la tabella perche' qil testo lo estraggo da un db...... e proprio da qua deruva il problema.....

    alla fine ho fatto cosi':
    - Prima di iniziare a scrivere la tabella mi salvo la posizione del cursore con GetY()
    - scrivo i dati della tabella mettendo i bordi delle cella solo a sinistra e destra
    - quando ho finito la tabella leggo nuovamente la posizione del cursore con GetY()
    - Ora sapendo posizione iniziale e posizione attuale posso calcolarmi quanti millimetri mancano alla tabella per arrivare all'altezza desiderata
    -non mi rimane che fare una cella dell'altezza mancante mettendo oltre ai bordi sinistr e destro anche quello inferiore per chiudere la tabella.....

    No pvt per sollecitare risposte, grazie.

  4. #4
    ciao
    puoi postare cortesemente il codice della soluzione?

    GRAZIE

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Diciamo che durante e dopo questo progetto ho decisamente approfondito la mia conoscenza di fpdf e attualmente se dovessi rifare quella tabella cambierei procedimento...

    Ad esempio:

    1) Mi salvo la posizione attuale con getY()
    2) Disegno tutte le colonne della tabella con i loro bordi
    3) Mi salvo la nuova posizione con getY()
    4) Torno alla prima ordinata salvata e scrivo i contenuti
    5) Torno alla seconda ordinata e scrivo quello che sta dopo la tabella

    Alla fine non era cosi' difficile, diciamo che non conoscendo ancora bene fpdf mi ero fatto piu' problemi del necessario... infatti potendo leggere la posizione attuale del cursore, e potendolo riposizionare a tuo piacimento, puoi fare quello che vuoi senza difficolta'.

    Per quanto riguarda il codice ora non ce l'ho a portata di mano, ma spero di essermi comunque spiegato...


    No pvt per sollecitare risposte, grazie.

  6. #6
    Il mio probelma è un po differente

    Io devo scrivere una tabella con 6 colonne riempite dinamicamente con dati di MySQL tramite query.

    Il problema è che non se il testo supera la dimensione della cella mi va a scrivere sulla successiva, mentre invece io vorrei andare a capo?

    Come si fa a fare questo?

    Hai degli esempi?

    GRAZIE

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Ma guarda che questo e' ancora un problema diverso, basta usare milticell invece di cell per far andare a capo il testo quando raggiunge il margine destro della cella....

    http://www.fpdf.org/it/doc/multicell.htm

    No pvt per sollecitare risposte, grazie.

  8. #8
    Ciao

    Non sono molto pratico di fpdf, credo che sia potente, ma devo risolvere presto questo problema.

    Ti posto lo script in php che crea il pdf dinamicamente riempendo le celle della tabella con dati di MySQL.

    Mi dici cortesemente dove modificare per avere le celle che possano contenere più righe di testo?

    GRAZIE

    CODICE:

    <?php
    require('../include/dbms.inc'); //connessione al database
    require('../fpdf.php');

    class PDF extends FPDF
    {





    //Colored table
    function FancyTable($header,$data)
    {
    //Colors, line width and bold font
    $this->SetFillColor(255,0,0);
    $this->SetTextColor(255);
    $this->SetDrawColor(192,0,0);
    $this->SetLineWidth(.3);
    $this->SetFont('','B');
    //Header
    $w=array(5,20,20,70,25,40);
    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;
    $numero=0;//contatore iscritti
    //estrazione id utenti iscritti
    $id=mysql_query("SELECT * FROM iscrizione WHERE idServizio='$_REQUEST[servizio]'")or die("errore servizi");
    $dati_id=mysql_fetch_array($id);

    while($dati_id) {//while estrazione dati utente






    $q=mysql_query("SELECT nome, cognome, telefono, codiceUnitOrg FROM utente WHERE idUtente='$dati_id[idUtente]'")or die("errore query dati utenti");
    $data=mysql_fetch_array($q);

    //ricaviamo l'Ente di appartenenza
    $unitorg=mysql_query("SELECT idEnte, denominazione FROM unitaorganizzativa WHERE idUnitOrg='$data[codiceUnitOrg]'")or die("errore query idEnte");
    $data_unitorg=mysql_fetch_array($unitorg);

    //$ente=mysql_query("SELECT denominazioneAmministrazione FROM ente WHERE idEnte='$data_unitorg[idEnte]'")or die("errore query nome Ente");
    //$data_ente=mysql_fetch_array($ente);
    //$ent=$data_ente[denominazioneAmministrazione];


    // foreach($data as $row)


    while($data)

    {

    $numero=$numero+1; //aggiorna contatore iscritti
    $c=0;
    $a=$this->GetY();
    $this->Cell($w[0],6,$numero,'LR',0,'L',$fill);
    $this->Cell($w[1],6,$data[nome],'LR',0,'L',$fill);
    $this->Cell($w[2],6,$data[cognome],'LR',0,'L',$fill);

    $this->Cell($w[3],6,$data_unitorg[denominazione],'LR',0,'L',$fill);




    $this->Cell($w[4],6,$data[telefono],'LR',0,'L',$fill);
    $this->Cell($w[5],6,'','LR',0,'R',$fill);
    $b=$this->GetY();
    $c=$b-$a;
    //$this->Cell($w[3],2,'','LR',0,'L',$fill);
    $this->Ln();
    $fill=!$fill;
    $data=mysql_fetch_array($q);

    }





    $dati_id=mysql_fetch_array($id);
    }//fine while estrazione dati utente










    $this->Cell(array_sum($w),0,'','T');
    }
    }

    $pdf=new PDF();
    //Column titles
    $header=array('N','Nome','Cognome','Ente di appartenenza','Telefono','Firma');
    //Data loading
    //$data=$pdf->LoadData('countries.txt');
    $pdf->SetFont('Arial','',9);
    $pdf->AddPage();



    $pdf->FancyTable($header,$data);
    $pdf->Output();
    ?>

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Essendo che effettua delle query sul db non posso provarlo.........

    Pero' usi la funzione cell svariate volte, ti ho detto che la funzione multicell va a capo quando arriva alla fine della cella, in questo modo non deborda in quella a lato.....

    Potresti iniziare a leggerti la differenza tra le 2 funzioni sul manuale e trarne le conclusioni.... se poi hai domande meno generali e piu' particolareggiate, ben vengano...

    http://www.fpdf.org/
    No pvt per sollecitare risposte, grazie.

  10. #10
    puoi farmi un esempio?

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.