17
02

Creare RTF da Php

postato da Administrator, in php, tutorials.

Il formato RTF
RTF (acronimo di RICH TEXT FORMAT) è un formato per documenti multipiattaforma, sviluppato da Microsoft nel lontano 1987. La maggior parte degli editor di testo e dei word processor disponibili per Microsoft Windows, Mac OS e Linux sono in grado di leggere e scrivere documenti RTF.
RTF permette di mantenere la formattazione dei caratteri, dei paragrafi e tutte le immagini presenti in un documento, impostare informazioni di impaginazione molto precise (la dimensione e l'orientamento del foglio per esempio) senza includere nessuna macro. Inoltre le specifiche possono essere consultate liberamente, e Microsoft ad ogni nuova versione, rilascia l’ opportuna documentazione. Dalla versione 1.0 del 1987 siamo giunti alla 1.9 del Febbraio 2007.

La soluzione: PhpRtf
PhpRtf è una libreria php free in grado di generare file RTF in modo dinamico. Il suo utilizzo è molto semplice, e ciò è dovuto anche al fatto che il codice è ben strutturato.
Di seguito sono elencate alcune delle funzionalità che la libreria mette a disposizione:

  • gestione e formattazione delle sezioni di un documento (margini, formato pagina, bordi, ecc..)
  • formattazione di header e footer (possiblità di inserire intestazione, contatore pagina automatico, la data in diversi formati, ecc..)
  • gestione e formattazione del paragrafo (controllo del background, bordi, allineamento, indentazione, ecc.)
  • gestione e formattazione del font (dimensione, colore, grassetto, corsivo, ecc.)
  • possibilità di aggiungere al documento immagini di tipo JPG e PNG
  • gestione delle tabelle: impostazione dei bordi e delle misure, del background e allineamento delle celle
  • possibilità di scrivere in RTF direttamente all' interno del documento
  • possibilità di utilizzare gli html style tags
  • supporto UTF-8

Sul sito ufficiale del progetto, www.phprtf.com, è possibile trovare tutta la documentazione e il dettaglio delle funzioni disponibi nella libreria.
Analizziamo il classico esempio: HelloWord !

<?php 
require_once("../rtf/Rtf.php"); 

$rtf = new Rtf(); 
$sect = &$rtf->addSection();
$sect->writeText('<i>Hello <b>World</b></i>.', new Font(12), new ParFormat('center')); 

$rtf->sendRtf('Hello World'); 
?>

Innanzitutto bisogna includere il sorgente della libreria, Rtf.php, e istanziare l’oggetto Rtf. A questo punto si aggiunge una pagina al documento attraverso il metodo addSection(), e si scrive al suo interno utilizzando writeText. Come è posisibile vedere, per scrivere sul file bisogna definire 2 attributi: il font, attraverso il quale applichiamo una formattazione di stile al carattere, e la formattazione del paragrafo che contiene il testo. In questo caso il paragrafo dispone il testo con allineamento centrato. Per salvare il documento, utilizziamo il metodo sendRtf(‘HelloWord’), che ci permette di scaricare il file col nome HelloWord.rtf

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!

Via: http://www.codicefacile.it

 

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • blinkbits
  • BlinkList
  • blogmarks
  • co.mments
  • del.icio.us
  • De.lirio.us
  • digg
  • Fark
  • feedmelinks
  • Furl
  • LinkaGoGo
  • Ma.gnolia
  • NewsVine
  • Reddit
  • scuttle
  • Smarking
  • Spurl
  • YahooMyWeb
  • DZone
  • Internetmedia
  • Snap2r
  • Technorati

Letto:791 volte

Correlati

    No related posts

Leave a Reply

web tracker