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
?>