Il primo articolo riguardo il formato RTF (Creare RTF da Php – Introduzione) ci ha insegnato le basi, ora passiamo ad un esempio un po’ piu complesso:
realizziamo una griglia dati, introducendo anche le funzioni per impostare gli attributi del foglio.
In questo esempio generiamo una tabella di 10 righe e 3 colonne al centro del documento. Ogni riga ha altezza 2cm e larghezza 5cm.
Il codice è il seguente:
require_once("../rtf/Rtf.php");
$rtf = new Rtf();
//aggiungo la pagina, imposto formato A4 pagina e margini
$sect = &$rtf->addSection();
$sect->setPaperWidth(21);
$sect->setPaperHeight(29.7);
$marginTop = 1;
$marginBottom = 1;
$marginLeft = 3;
$marginRight = 3;
$sect->setMargins($marginLeft, $marginTop, $marginRight, $marginBottom);
Dopo aver istanziato l’ oggetto Rtf e creato la pagina, definiamo il formato A4 e impostiamo i margini della pagina attraverso il medoto setMargins.
$columns = 4;
$rows = 10;
$cell_h = 2;
$cell_w = 5;
//creo la tabella con 10 righe e 3 colonne
$table = &$sect->addTable();
$table->addRows($rows, $cell_h);
$table->addColumn($cell_w);
$table->addColumn($cell_w);
$table->addColumn($cell_w);
Per creare la tabella abbiamo utlizzato il metodo addTable(). La definizione delle righe è molto semplice e si possono utilizzare 2 metodi: il primo è addRow(), che riceve in ingresso l’ altezza e appende una riga alla tabella. Il secondo che abbiamo utlizzato noi è una miglioria del metodo precedente, in quanto addRows permette in un colpo solo di inserire un preciso numero di righe, ma con la STESSA altezza. Per definire le colonne invece, si utilizza il metodo addColumn() che riceve in ingresso la larghezza della colonna.
Facciamo attenzione ad inserire i giusti centimetri altrimenti si esce fuori dal foglio.
//stile per il contenuto interno della cella
$innerPar = new ParFormat('left');
$innerPar->setIndentLeft(0.64);
$innerPar->setIndentRight(0.64);
$innerFont = new Font(10, 'Times New Roman');
//riempio la tabella
for($row_index = 1; $row_index <= $rows; $row_index++){
for($col_index = 1; $col_index <= $columns; $col_index++){
$text = 'ROW:'.$row_index.'COL:'.$col_index;
$table->writeToCell($row_index, $col_index, $text, $innerFont, $innerPar);
unset($text);
}//end rows for
}//end cols for
//outputting rtf ...
$rtf->prepare();
$rtf->sendRtf('test');
A questo punto, con un doppio ciclo (quello esterno scandisce le righe, il più interno le colonne) andiamo a posizionarci nelle celle, e con writeToCell settiamo il contenuta della cella corrente. Anche qui dobbiamo definire sia font che stile del paragrafo.
Questi sono 2 esempi molto semplici che mettono in evidenza la semplicità e versatilità della libreria … ma c’è molto altro! Alla pagina www.phprtf.com/index.php/samples/ è presente una modesta carrellata di esempi, dove vengono esposte la maggior parte delle funzionalità. Enjoy!