Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725

    TCPDF e caratteri speciali

    Ciao a tutti, per creare dei file pdf con php mi avvalgo della libreria TCPDF, tuttavia se stampo dei caratteri speciali come è oppure ° non vengono stampati nel pdf, pensavo bastasse indicare

    Codice PHP:
    <?
    function PDF() {
        
    parent :: TCPDF(PDF_PAGE_ORIENTATIONPDF_UNITPDF_PAGE_FORMATTRUE"UTF-8");
    }
    ?>
    ma purtroppo non basta, qualche dritta? Ho già googlato e letto vari post in giro ma nada...

    Thanks!
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  2. #2
    hai provato con ISO-8859-1?

  3. #3
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Non funge
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  4. #4
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Uppete
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  5. #5
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    RISOLTO


    Posto per chi riscontra lo stesso problema.
    I caratteri speciali non vengono stampati correttamente se si utilizza direttamente la funzione Cell, si può usarla subito tuttavia bisogna prima usare la funzione htmlentities e il testo così formattato mandarlo in pasto a unhtmlentities.

    Potete quindi richiamare una funzione che lavori per voi.

    Esempio:
    Codice PHP:

      
    function AdattaCell($w$h 0$txt ''$border 0$ln 0$align ''$fill 0$link ''$stretch 0) {         
                
    $this->Cell($w$h$this->unhtmlentities(htmlentities($txt)), $border$ln$align$fill$link$stretch);            
            }
    $this->AdattaCell(0,0,"Ciao oggi è martedì"01"L"); 
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  6. #6
    Originariamente inviato da Aires
    RISOLTO
    Posto per chi riscontra lo stesso problema.
    I caratteri speciali non vengono stampati correttamente se si utilizza direttamente la funzione Cell, si può usarla subito tuttavia bisogna prima usare la funzione htmlentities e il testo così formattato mandarlo in pasto a unhtmlentities.

    Potete quindi richiamare una funzione che lavori per voi.

    Esempio:
    Codice PHP:

      
    function AdattaCell($w$h 0$txt ''$border 0$ln 0$align ''$fill 0$link ''$stretch 0) {         
                
    $this->Cell($w$h$this->unhtmlentities(htmlentities($txt)), $border$ln$align$fill$link$stretch);            
            }
    $this->AdattaCell(0,0,"Ciao oggi è martedì"01"L"); 
    Visto che sei riuscito a risolvere spiegami come faresti a far funzionare questo script che
    ovviamente contiene i caratteri speciali e la tua frase "Ciao oggi è martedì"

    <?php
    require('/var/www/vhosts/name domain.../httpdocs/tcpdf/config/lang/eng.php');
    require('/var/www/vhosts/name domain.../httpdocs/tcpdf/tcpdf.php');

    //creare un nuovo documento PDF - create new PDF document
    //$pdf=new TCPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMA T,true,'UTF-8',false);

    $pdf=new TCPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMA T,true,UTF-8,false);

    //rimuove heder e footer di default - remove default header/footer
    //$pdf->setPrintHeader(false);
    //$pdf->setPrintFooter(false);


    //set header and footer fonts
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN,'',PDF_FON T_SIZE_MAIN));
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA,'',PDF_FON T_SIZE_DATA));

    //set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

    //imposta i margini - set margins
    $pdf->SetMargins(PDF_MARGIN_LEFT,PDF_MARGIN_TOP,PDF_MAR GIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

    //imposta le istruzioni in automarico della pagina - set auto page breaks
    $pdf->SetAutoPageBreak(TRUE,PDF_MARGIN_BOTTOM);

    //imposta le dimensioni dell'immagine - set image scale factor
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

    //imposta alcune stringhe che dipendono dalla lingua - set some language-dependent strings
    $pdf->setLanguageArray($l);

    //imposta lo spazio di default - set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);


    //set default font subsetting mode
    $pdf->setFontSubsetting(true);

    //set font è la scelta del font del carattere dove è possibile specificare il grasseto, il corsivo e la dimensione

    //CARATTERE helvetia
    //$pdf->SetFont('helvetica','',10,'',true); //OK 10 è la dimensione
    //$pdf->SetFont('helvetica','B',10,'',true); // OK dove B corrisponde al grassetto e 10 la dimensione
    //$pdf->SetFont('helvetica','I',10,'',true); // OK dove I corrisponde al corsivo e 10 la dimensione
    //$pdf->SetFont('helvetica','BI',10,'',true); // OK dove BI corrisponde a grassetto + corsivo e 10 la dimensione

    //CARATTERE times, times new romans
    //$pdf->SetFont('times','',10,'',true); //OK
    //$pdf->SetFont('times','B',10,'',true); // OK dove B corrisponde al grassetto e 10 la dimensione
    //$pdf->SetFont('times','I',10,'',true); // OK dove I corrisponde al corsivo e 10 la dimensione
    //$pdf->SetFont('times','BI',10,'',true); // OK dove BI corrisponde a grassetto + corsivo e 10 la dimensione
    $pdf->SetFont('times','BI',10);


    //aggiunge una pagina - add a page
    $pdf->AddPage();

    //Inserisce il testo da stampare - set some text to print
    $utf8text = <<<EOD

    Es wird später gebaut werden.

    Für die Zeit-Nutzung ...

    Ciao oggi è martedì
    EOD;

    //stampa il blocco del testo usando l'istruzione Write() - print a block of text using Write()
    $pdf->Write($h=0,$utf8text,$link='',$fill=0,$align='',$ ln=true,$stretch=0,$firstline=false,
    $firstblock=false,$maxh=0);

    //chiude ed invia il documento - close and output PDF document
    $pdf->Output('1a.pdf');
    ?>

  7. #7
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    1. Usa i Tag php
    2. La parte dove indichi il testo mettila tra ""
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  8. #8
    Ho trovato anch'io il sistema di farlo funzionare, ma necessita dire all'interno del file, che costruisce il PDF, di prelevare un file in formato txt da qualche cartella/directory dove questo è posizionato.

    Ecco quanto scritto nel file dal nome utf8.txt:
    (nessun apice solo parole scritte)

    Es wird später gebaut werden.

    Für die Zeit-Nutzung ...

    Ciao oggi è martedì

    Questo lo script che a me funziona con alcune spiegaziona ed al quale ho dato il nome di provautf8.php

    <?php
    //Nome del file provautf8.php per alcune prove dei caratteri speciali utf8 :
    require('/var/www/vhosts/nome dominio/httpdocs/tcpdfPDF/config/lang/eng.php');
    require('/var/www/vhosts/nome dominio/httpdocs/tcpdfPDF/tcpdf.php');

    //creare un nuovo documento PDF - create new PDF document
    $pdf=new TCPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMA T,true,'UTF-8',false);

    //rimuove header e footer di default - remove default header/footer
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN,'',PDF_FON T_SIZE_MAIN));
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA,'',PDF_FON T_SIZE_DATA));

    //set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

    //imposta i margini
    $pdf->SetMargins(PDF_MARGIN_LEFT,PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

    //imposta le istruzioni in automatico della pagina - set auto page breaks
    $pdf->SetAutoPageBreak(TRUE,PDF_MARGIN_BOTTOM);

    //imposta le dimensioni dell'immagine - set image scale factor
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

    //imposta alcune stringhe che dipendono dalla lingua - set some language-dependent strings
    $pdf->setLanguageArray($l);

    //imposta lo spazio di default - set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

    //set dei font è la scelta del font del carattere dove è possibile specificare il grasseto, il corsivo e la dimensione
    //CARATTERE helvetia
    //$pdf->SetFont('helvetica','',10,'',true); //OK 10 è la dimensione
    //$pdf->SetFont('helvetica','B',10,'',true); // OK dove B corrisponde al grassetto e 10 la dimensione
    //$pdf->SetFont('helvetica','I',10,'',true); // OK dove I corrisponde al corsivo e 10 la dimensione
    $pdf->SetFont('helvetica','BI',10,'',true); // OK dove BI corrisponde a grassetto + corsivo e 10 la dimensione

    //CARATTERE times, times new romans
    //$pdf->SetFont('times','',10,'',true); //OK
    //$pdf->SetFont('times','B',10,'',true); // OK dove B corrisponde al grassetto e 10 la dimensione
    //$pdf->SetFont('times','I',10,'',true); // OK dove I corrisponde al corsivo e 10 la dimensione
    //$pdf->SetFont('times','BI',10,'',true); // OK dove BI corrisponde a grassetto + corsivo e 10 la dimensione

    //$pdf->SetFont('freeserif','',10,'',true); //OK
    //$pdf->SetFont('freeserif','B',10,'',true); // OK dove B corrisponde al grassetto e 10 la dimensione
    //$pdf->SetFont('freeserif','I',10,'',true); // OK dove I corrisponde al corsivo e 10 la dimensione
    //$pdf->SetFont('freeserif','BI',10,'',true); // OK dove BI corrisponde a grassetto + corsivo e 10 la dimensione

    //aggiunge una pagina - add a page
    $pdf->AddPage();

    //ottiene/preleva il testo da un file esterno posizionato in una certa cartella/directory - get esternal file content
    $txt = file_get_contents('utf8.txt',false);

    //impostazione del colore del testo - set color for text
    $pdf->SetTextColor(0,63,127);

    //stampa il blocco del testo usando l'istruzione Write() - print a block of text using Write()
    //Write($h,$txt,$link='',$fill=0,$align='',$ln=false ,$stretch=0,$firstline=false,$firstblock=false,$ma xh=0)
    $pdf->Write(5,$txt,'',0,'',false,0,false,false,0);

    //chiude ed invia il documento - close and output PDF document
    //il documento prenderà il nome qui sotto specificato/scelto da me utf8test.pdf
    $pdf->Output('utf8test.pdf);
    ?>

  9. #9
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Se vuoi una risposta usa i tag PHP se no non leggo neppure è un bordello impressionante cercare di capire il tuo codice cosi formattato, comunque riscrivi la tua domanda perchè non si capisce assolutamente
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  10. #10
    Originariamente inviato da Aires
    Se vuoi una risposta usa i tag PHP se no non leggo neppure è un bordello impressionante cercare di capire il tuo codice cosi formattato, comunque riscrivi la tua domanda perchè non si capisce assolutamente
    Ho solo cercato di spiegare a mio modo i vari funzionamenti con le descrizioni mentre i file da utilizzare sono due.
    il primo dal nome utf8.txt dove andrebbe inserito il seguente testo o quello che uno vuol scrivere

    Es wird später gebaut werden.

    Für die Zeit-Nutzung ...

    Ciao oggi è martedì

    il secondo file php che richiama con file_get_contentsin utf8.txt cioè il testo
    <?php
    require('/var/www/vhosts/nome dominio/httpdocs/tcpdfPDF/config/lang/eng.php');
    require('/var/www/vhosts/nome dominio/httpdocs/tcpdfPDF/tcpdf.php');
    $pdf=new TCPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMA T,true,'UTF-8',false);
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN,'',PDF_FON T_SIZE_MAIN));
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA,'',PDF_FON T_SIZE_DATA));
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    $pdf->SetMargins(PDF_MARGIN_LEFT,PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
    $pdf->SetAutoPageBreak(TRUE,PDF_MARGIN_BOTTOM);
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    $pdf->setLanguageArray($l);
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    $pdf->SetFont('helvetica','BI',10,'',true);
    $pdf->AddPage();
    $txt = file_get_contents('utf8.txt',false);
    $pdf->SetTextColor(0,63,127);
    //Write($h,$txt,$link='',$fill=0,$align='',$ln=false ,$stretch=0,$firstline=false,$firstblock=false,$ma xh=0)
    $pdf->Write(5,$txt,'',0,'',false,0,false,false,0);
    $pdf->Output('utf8test.pdf);
    ?>

    Ora devo cementarmi con la costruzione delle celle per la predisposizione di un albero genealogico alla quarta generazione dove la prima colonna deve contenere due celle molto grandi, la seconda colonna deve contenere 4 celle, la terza colonna deve contenere 8 celle ed infine l'ultima colonna deve contenere 16 celle.
    In fine all'interno di ogni cella dovró inserire tutti i dati provenineti dal database e questo non è un problema avendo già a disposizione tutti i dati, solo che dovró forse creare tutta una serie di variabili per ogni dato del tipo testo con estensione (txt) visto che l'esempio qui sopra mi ha fatto utilizzare queste istruzioni(utf8.txt)
    Spero di non intrapprendere una via sbagliata.

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.