Visualizzazione dei risultati da 1 a 8 su 8

Discussione: PHP to PDF?

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    35

    PHP to PDF?

    Salve a tutti, è ancora il neofita disperato che vi scrive.

    Ho la necessità di creare un pdf da un file php.

    Mi spiego meglio: ho uno script php che mi genera un output in cui ci sono vari dati.
    Ad es. il browser visualizza:

    Il sottoscritto CICCIO CAPPUCCIO nato a CAPPUCCIONIA residente a CAPPUCCINIA


    dove CICCIO, CAPPUCCIO, CAPPUCCIONIA e CAPPUCCINIA sono dati che lo script prende da un database e li schiaffa in output.

    Come posso fare per convertire l'output in un file pdf? avete qualche consiglio da darmi? con fpdf, a quanto pare, non è possibile farlo.

    Ciao!

  2. #2
    Prova questo
    Codice PHP:
    <?php
    ob_start
    ();  //  esegue la funzione header();
    /* 
        Per far funzionare questo script bisogna attivare la libreria PDFlib
        fornita con php (ma disattivata di default).
        Per attivarla aprire php.ini e cercare la stringa 
        ";extension=php_pdf.dll" e cancellare il " ; " iniziale.
        Chiudere il server e riavviarlo. 
        Ricordati che i font che imposterai devono essere presenti nella cartella dove salvi il file.pdf
     */
     
    if ($_POST['Fpag']='A4'){
    $L=595// Larghezza pagina A4
    $H=842// Altezza Pagina A4
    }
    elseif (
    $_POST['Fpag']='A5')
    {
    $L=421// Larghezza pagina A5
    $H=595// Altezza Pagina A5
    }
    else 
    {
    $L=842// Larghezza pagina A3
    $H=1190// Altezza Pagina A3
    }

    $lrMargin=80// Margini della pagina 
    $tbMargin=80;
    $lineWidth=$L-($lrMargin*2); // lungezza max riga di testo
    $textPos=$H-$tbMargin;

    $Nome$_POST['Nome'] ;  // Nome doc
    $CarNome=$_POST['select'] ;  // Nome carattere
    $CarNum $_POST['cnum'] ;  // Grandezza carattere
    $testo =$_POST['testo'];  // 1° paragrafo 
    $testo1 " \n ".$_POST['testo1'];// 2° peragrafo ( \n per andare a capo )
    $testo2 " \n ".$_POST['testo2'];
    $testo3 " \n ".$_POST['testo3'];
    $testo4 " \n ".$_POST['testo4'];
    $testo5 " \n ".$_POST['testo5'];  // 6° paragrafo
    $txtTot $testo.$testo1.$testo2.$testo3.$testo4.$testo5;
    $words explode(" ",$txtTot);  // divido tutto il testo in singole parole

        
    $myPDF pdf_new(); // Crea un nuovo documento .pdf
        
    pdf_open_file($myPDF); // Assegno un nome al file .pdf
        
    pdf_begin_page($myPDF,$L,$H); // Inserisco la prima pagina specificando altezza e larghezza

    $arial pdf_findfont($myPDF$CarNome"host" 1) ; // imposto il font
    pdf_setfont($myPDF $arial $CarNum);  // lo faccio caricare 
    //pdf_show_xy ($myPDF, $testo , 70,700) ; // scrivo il testo e indico la posizione nella pagina

    $lines = array("");  // Array  per generare le righe di testo
    $line=0;
    foreach(
    $words as $word){
        if(
    $word == "\n"){   // controllo se esiste \n nel testo
            
    $line++;
            
    $lines[$line] = $word;
            
    $line++;
            
    $lines[$line] = "";         // se esiste stampa una riga vuota
        
    }
        elseif(
    pdf_stringwidth($myPDF,$lines[$line] . " " $word) < $lineWidth)  // Controllo la lungezza della riga di testo
        
    {
            
    $lines[$line] = $lines[$line] . $word " ";
        }                                                            
    // se non è ancora finita la lunghezza minima scrive su quella riga 
        
    else {                                                    // altrimenti aggiunge una riga e continua a scrive 
            
    $line++;
            
    $lines[$line] = $word " ";
        }
    }

    pdf_set_text_pos($myPDF,$lrMargin,$H-$tbMargin);   // definisco la posizione del testo

    foreach($lines as $aline) {                    // ricontrollo se è presente \n  se viene trovato  la variabile $textPos viene usata
                                            // per memorizzare la posizione orizzontale del testo , questo crea lo spazzio tra i paragrafi
        
    if($aline == "\n"){
            
    $textPos=$textPos-($CarNum+2);
        }
        else {
            
    pdf_show_xy($myPDF,$aline,$lrMargin,$textPos);
            
    $textPos=$textPos-($CarNum+2);
        }

        if(
    $textPos <= $tbMargin){                    // controllo se $textPos è scesa al di sotto della posizione minima sulla pagina 
            
    $textPos=$H-$tbMargin;
            
    pdf_end_page($myPDF);
            
    pdf_begin_page($myPDF,$L,$H);        
            
    $arial pdf_findfont($myPDF$CarNome"host" 1) ;
            
    pdf_setfont($myPDF $arial $CarNum);
            
    pdf_set_text_pos($myPDF,$lrMargin,$H-$tbMargin);
        }                                                        
    // se si verifica allora si chiude la pagina e se ne apre una nuova
    }

    pdf_end_page($myPDF); // chiude la pagina
        
    pdf_close ($myPDF); // chiude il file .pdf

    $data pdf_get_buffer($myPDF);

    header("Content-type: application/pdf");                     //  Ora vado a settare un ridirezione che farà in modo di 
    header("Content-disposition: inline; filename=$Nome.pdf");   //  indirizzarmi alla pagina appena creata.
    header("Content-length: " strlen($data));                     //  Con questo evito di affollare il server perchè la pagina viene solo 
                                                                //  salvata temporaneamente e poi alla chiusura viene rimossa se invece si 
    echo $data;                                                    //desidera salvare la pagina allora si userà il tasto salva del programma che
                                                                // visualizza la pagina .pdf
    ?>
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    35
    Ti ringrazio tantissimo...però ho questo problema:

    ho scaricato la libreria PDFlib contenuta in nel PECL scaricabile da http://it.php.net/downloads.php

    ho aggiunto php_pdf.dll nella mia extension_dir (c:\php\ext), poi ho aggiunto manualmente la riga extension=php_pdf.dll al php.ini, ho riavviato Apache ma non funge!

    Fatal error: Call to undefined function pdf_new()


  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    35
    up

  5. #5
    Che php sui? su che server e a che versione?
    Se usi php 4.4.7 su apache 1.3.x potresti avere dei problemi
    Comunque ti consiglio fpdf, www.fpdf.org

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    35
    Originariamente inviato da vdfn
    Che php sui? su che server e a che versione?
    Se usi php 4.4.7 su apache 1.3.x potresti avere dei problemi
    Comunque ti consiglio fpdf, www.fpdf.org
    php 5.2.4
    apache 2.2.x

    con fpdf, a quanto pare, non posso fare il "giochetto" di convertire un'intera pagina php.

  7. #7
    Prova a mettere il percorso completo e non solo il nome dell'estensione.

    Io avevo problemi con le estensioni per Oracle ed ho risolto così.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    35
    Originariamente inviato da alcio74
    Prova a mettere il percorso completo e non solo il nome dell'estensione.

    Io avevo problemi con le estensioni per Oracle ed ho risolto così.

    va beh ma metto la libreria nella extension dir posso tranquillamente scrivere soltanto il nome dell'estensione...

    cmq ho provato a fare come dici ma niente

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 © 2024 vBulletin Solutions, Inc. All rights reserved.