Questo codice fa riferimento a quanto pubblicato qui.
<?php
// BlogNatale 2007
// Progetto 1: Genera un file PDF con stampate cartelle da utilizzare per la tombola natalizia
// Coded By Napolux - http://www.napolux.com

// Imposto file PDF
require('fpdf.php');

$pdf=new FPDF("P","mm","A4");
$pdf->AddPage();


// Inizializzo generatore di numeri casuali - http://it2.php.net/mt_srand
function creaSeme()
{
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}

// Creo il seme che verrГ  utilizzato per la generazione
mt_srand(creaSeme());

//$valorecasuale = mt_rand();

function generaCartelle($numCartelle)
{
    // Variabile globale
    global $pdf;
    
    for($n = 0; $n < $numCartelle; $n++)
    {
        // Ogni 3 cartelle aggiungo una pagina :)
        if(($n % 3 == 0) && ($n > 0))
            $pdf->AddPage();
        
        // Definisco grandezza font
        $pdf->SetFont("Arial","B",20);

        // Array bidimensionale che conterrГ  la cartella generata
        $cartella = array();
        
        // Serve per evitare duplicati
        $inseriti = array();
        
        // Genero matrice 3x9 contenente la cartella
        for($i=0;$i<3;$i++)
        {    
            for($j=0;$j<9;$j++)
            {
                // Casi speciali (1a e 9a colonna)
                switch($j)
                {
                    // 1a colonna (numeri casuali da 1 a 9)
                    case 0:
                        $ok = false;
                        
                        while(!$ok)
                        {
                            $cartella[$i][$j] = mt_rand((($j*10)+1),((($j+1)*10)-1));
                            
                            if(!in_array($cartella[$i][$j],$inseriti))
                            {
                                $ok = true;
                                $inseriti[] = $cartella[$i][$j];
                            }
                        }        
                    break;
                    
                    // 9a colonna (numeri casuali da 80 a 90)
                    case 8:
                        $ok = false;
                        
                        while(!$ok)
                        {
                            $cartella[$i][$j] = mt_rand((($j*10)),(($j+1)*10));    
                            
                            if(!in_array($cartella[$i][$j],$inseriti))
                            {
                                $ok = true;
                                $inseriti[] = $cartella[$i][$j];
                            }
                        }        
                    break;
                    
                    // Colonne intermendie
                    default:
                        $ok = false;
                        
                        while(!$ok)
                        {
                            $cartella[$i][$j] = mt_rand((($j*10)),((($j+1)*10)-1));    
                            
                            if(!in_array($cartella[$i][$j],$inseriti))
                            {
                                $ok = true;
                                $inseriti[] = $cartella[$i][$j];
                            }
                        }    
                    break;        
                }
            }
        }
    
        // Riordino le colonne
        for($j=0;$j<9;$j++)
        {
            $tmp = array($cartella[0][$j],$cartella[1][$j],$cartella[2][$j]);
            
            sort($tmp);
            
            $cartella[0][$j] = $tmp[0];
            $cartella[1][$j] = $tmp[1];
            $cartella[2][$j] = $tmp[2];    
        }
    
        // Elimino 4 elementi per riga
        for($i=0;$i<3;$i++)
        {
            $eliminati = 0;
            
            while ($eliminati < 4)
            {
                $posizione = mt_rand(0,8);
                 
                if($cartella[$i][$posizione] != " ")
                {
                    $cartella[$i][$posizione] = " ";
                    $eliminati++;
                }    
            }
        }
    
        // Separatore e intestazione cartelle :)
        $pdf->Cell(40,10,"Tombola!");
        $pdf->Ln();
    
        // Aggiungo cartella al PDF
        for($i=0;$i<3;$i++)
        {    
            for($j=0;$j<9;$j++)
            {
                $pdf->Cell(20,20,$cartella[$i][$j],1,0,"C",0);    
            }
            $pdf->Ln();
        }
    
        // Credits & separatore
        $pdf->SetFont('Arial','B',10);
        $pdf->Cell(10,10,"Da un'idea di Francesco Napoletano - http://www.napolux.com");
        $pdf->Ln(20);
    }    
}

// Chiamo funzione per generare X cartelle
// Se non viene passato parametro ne genero solamente 3
if(isset($_GET["numcartelle"]) && $_GET["numcartelle"] > 0)
    generaCartelle($_GET["numcartelle"]);
else
    generaCartelle(3);

// Mando in output il PDF :)
$pdf->Output();
?>