+
+
+ setQuery("SELECT * FROM `component_family` LEFT JOIN component_family_type ON component_family.component_family_type=component_family_type.idcomponentfamilytype WHERE `component_family`.company_id='$idcompany' OR `component_family`.company_id IS NULL");
+ $tablequery->execute();
+
+ $wa_startindex = 0;
+ while (!$tablequery->atEnd()) {
+ $wa_startindex = $tablequery->Index;
+ ?>
+
+
+ setQuery("SELECT component.*, component_family.*, component_family_type.*, component.company_id AS companyidcomp FROM `component` LEFT JOIN component_family ON component.component_Family_id=component_family.idcomponentfamily LEFT JOIN component_family_type ON component.component_family_type=component_family_type.idcomponentfamilytype ORDER BY component.preset");
+ $tablequery->execute();
+
+ ?>
+ atEnd()) {
+ $wa_startindex = $tablequery->Index;
+ ?>
+
+
+
+ setQuery("SELECT * FROM analysis_component LEFT JOIN component ON analysis_component.idcomponent=component.idcomponent WHERE analysis_component.idanalysis='$idanalysis'");
+ $companalysis->execute(); ?>
+ setQuery("SELECT * FROM unit_measure ORDER BY unit_measure.name");
+ $umlist->execute();
+ ?>
+
+ setQuery("SELECT * FROM component_family ORDER BY component_family.name_componentfamily");
+ $fanilycatquery->execute();
+ ?>
+ setQuery("SELECT * FROM component_family_type ORDER BY component_family_type.name_componentfamilytype");
+ $maincatquery->execute(); ?>
+
+
+
+ setQuery("SELECT * FROM `analysis` WHERE analysis.idanalysis='$idanalysis'");
+ $tablequery->execute();
+ ?>
+ setQuery("SELECT * FROM component WHERE component.company_id='$idcompany' ORDER BY component.name_component");
+ $componentlist->execute();
+ ?>
+ setQuery("SELECT * FROM analysis_component LEFT JOIN component ON analysis_component.idcomponent=component.idcomponent WHERE analysis_component.idanalysis=$idanalysis ORDER BY component.name_component");
+ $companalysis->execute();
+ ?>
+
1.Esattamente qual'è la licenza di FPDF? Ci sono limitazioni all'utilizzo?
+FPDF è rilasciata con licenza permissiva: non vi sono restrizioni di utilizzo. Puoi incorporarla
+liberamente nelle tue applicazioni (commerciali o meno), con o senza modifiche.
+
+
+
+
2.Quando tento di generare un PDF, ricevo il seguente messaggio di errore: "Some data has already been output, can't send PDF file".
+Non devi inviare al browser nient'altro che il solo PDF: non HTML, nessuno spazio o ritorno di carrello. Un
+caso comune consiste nell'avere uno spazio bianco indesiderato alla fine dello script di un file incluso.
+Se non riesci a determinare da dove possa derivare l'errore, il seguente altro messaggio di errore
+eventualmente apparso appena prima potrà aiutarti:
+
+Warning: Cannot modify header information - headers already sent by (output started at script.php:X).
+
+Ciò significa che lo script.php genera qualche output alla riga X. Vai a tale linea di codice e correggila.
+Nel caso in cui tale messaggio non appaia, prima controlla di non aver disabilitato i messaggi d'errore e
+poi aggiungi all'inizio del tuo script le seguenti linee:
+
+Non utilizzare la codifica UTF-8. I font standard FPDF utilizzano ISO-8859-1 o windows-1252.
+Vi è la possibilità di effettuare una conversione verso ISO-8859-1 tramite utf8_decode():
+
+
$str = utf8_decode($str);
+
+Ma alcuni caratteri, come il simbolo di Euro, non possono essere convertiti correttamente. Se l'estensione
+iconv è disponibile, la via migliore è la seguente:
+
+
$str = iconv('UTF-8', 'windows-1252', $str);
+
+
+
+
+
4.Tento di inserire il simbolo dell'Euro ma non funziona.
+I font standard hanno il simbolo dell'euro alla posizione 128. Puoi definire per convenienza una costante
+come questa:
+
+
define('EURO', chr(128));
+
+
+
+
+
5.Provo a visualizzare una variabile nel metodo Header, ma non viene stampato nulla.
+Devi utilizzare la parola chiave global per accedere alle variabili globali, per esempio:
+
+
function Header()
+{
+ global $title;
+
+ $this->SetFont('Arial', 'B', 15);
+ $this->Cell(0, 10, $title, 1, 1, 'C');
+}
+
+In alternativa, puoi utilizzare una proprietà dell'oggetto:
+
6.Ho definito i metodi Header e Footer nella mia classe PDF ma non appare nulla.
+Devi creare un oggetto dalla classe PDF, non FPDF:
+
+
$pdf = new PDF();
+
+
+
+
+
7.Non riesco a far funzionare le interruzioni di linea. Inserisco i \n nella stringa stampata da MultiCell ma non funziona.
+Devi chiudere la stringa tra virgolette, non tra apici singoli.
+
+
+
+
8.Per generare il PDF uso jQuery, ma non viene mostrato.
+Non usare una richiesta AJAX per recuperare il file PDF.
+
+
+
+
9.Ho disegnato un frame di dimensioni molto precise, ma quando viene stampato noto alcune differenze.
+Per rispettare le dimensioni, scegli "Nessuno" nel settaggio della scala di stampa al posto di
+"Restringi all'area di stampa" nel box di dialogo della stampa.
+
+
+
+
10.Vorrei utilizzare l'intera superficie della pagina, ma quando stampo restano sempre alcuni margini. Come posso eliminarli?
+Tutte le stampanti hanno dei margini fisici (diversi a seconda del modello), ed è quindi impossibile
+rimuoverli e stampare su tutta la superficie della carta.
+
+
+
+
11.Come posso impostare uno sfondo nel mio PDF?
+Per un'immagine, effettua una chiamata a Image() all'interno del metodo Header(), prima di ogni altro
+output. Per impostare un colore di sfondo usa Rect().
+
+
+
+
12.Come posso impostare una specifica intestazione o un piede nella prima pagina?
16.Qual'è il limite delle dimensioni dei file che posso generare con FPDF?
+Non c'è un limite particolare. Ci sono comunque alcune restrizioni:
+
+
+- La massima dimensione di memoria allocata per gli script PHP è impostata. Per documenti
+molto grandi, specialmetne con immagini, questo limite potrebbe essere raggiunto (il file
+viene generato nella memoria). Questo parametro è configurabile nel file php.ini.
+
+
+- Il tempo massimo di esecuzione è impostato di default a 30 secondi. Questo limite può naturalmente
+essere raggiunto con facilità. E' configurato nel file php.ini e può essere alterato dinamicamente con
+la funzione set_time_limit().
+
+
+
+
17.Posso modificare un PDF con FPDF?
+Grazie all'estensione FPDI,
+è possibile importare pagine da un documento PDF preesistente.
+Poi, puoi aggiungere ad esse altro contenuto.
+
+
+
+
18.Vorrei creare un motore di ricerca in PHP e indicizzare i file PDF. Posso farlo utilizzando FPDF?
+No, ma esiste una utility scritta in C e rilasciata sotto licenza GPL, pdftotext, che consente di estrarre
+il contenuto testuale da un PDF. E' fornita col il pacchetto Xpdf.
+
+
+
+
19.Posso convertire una pagina HTML in PDF con FPDF?
+Non pagine del "mondo reale". No, ma esiste una utility scritta in C e rilasciata sotto licenza GPL,
+HTMLDOC, che permette di farlo
+ottenendo buoni risultati.
+
+
+
+
20.Posso concatenare files PDF con FPDF?
+Non direttamente, ma è possibile utilizzare FPDI
+per raggiungere tale obiettivo. Esistono anche alcuni tools liberi a linea di comando:
+pdftk e
+mbtPdfAsm.
+
+- Added GetPageWidth() and GetPageHeight().
+- Fixed a bug in SetXY().
+
+
v1.8 (2015-11-29)
+
+- PHP 5.1.0 or higher is now required.
+- The MakeFont utility now subsets fonts, which can greatly reduce font sizes.
+- Added ToUnicode CMaps to improve text extraction.
+- Added a parameter to AddPage() to rotate the page.
+- Added a parameter to SetY() to indicate whether the x position should be reset or not.
+- Added a parameter to Output() to specify the encoding of the name, and special characters are now properly encoded. Additionally the order of the first two parameters was reversed to be more logical (however the old order is still supported for compatibility).
+- The Error() method now throws an exception.
+- Adding contents before the first AddPage() or after Close() now raises an error.
+- Outputting text with no font selected now raises an error.
+
+
v1.7 (2011-06-18)
+
+- The MakeFont utility has been completely rewritten and doesn't depend on ttf2pt1 anymore.
+- Alpha channel is now supported for PNGs.
+- When inserting an image, it's now possible to specify its resolution.
+- Default resolution for images was increased from 72 to 96 dpi.
+- When inserting a GIF image, no temporary file is used anymore if the PHP version is 5.1 or higher.
+- When output buffering is enabled and the PDF is about to be sent, the buffer is now cleared if it contains only a UTF-8 BOM and/or whitespace (instead of throwing an error).
+- Symbol and ZapfDingbats fonts now support underline style.
+- Custom page sizes are now checked to ensure that width is smaller than height.
+- Standard font files were changed to use the same format as user fonts.
+- A bug in the embedding of Type1 fonts was fixed.
+- A bug related to SetDisplayMode() and the current locale was fixed.
+- A display issue occurring with the Adobe Reader X plug-in was fixed.
+- An issue related to transparency with some versions of Adobe Reader was fixed.
+- The Content-Length header was removed because it caused an issue when the HTTP server applies compression.
+
+
v1.6 (2008-08-03)
+
+- PHP 4.3.10 or higher is now required.
+- GIF image support.
+- Images can now trigger page breaks.
+- Possibility to have different page formats in a single document.
+- Document properties (author, creator, keywords, subject and title) can now be specified in UTF-8.
+- Fixed a bug: when a PNG was inserted through a URL, an error sometimes occurred.
+- An automatic page break in Header() doesn't cause an infinite loop any more.
+- Removed some warning messages appearing with recent PHP versions.
+- Added HTTP headers to reduce problems with IE.
+
+
v1.53 (2004-12-31)
+
+- When the font subdirectory is in the same directory as fpdf.php, it's no longer necessary to define the FPDF_FONTPATH constant.
+- The array $HTTP_SERVER_VARS is no longer used. It could cause trouble on PHP5-based configurations with the register_long_arrays option disabled.
+- Fixed a problem related to Type1 font embedding which caused trouble to some PDF processors.
+- The file name sent to the browser could not contain a space character.
+- The Cell() method could not print the number 0 (you had to pass the string '0').
+
+
v1.52 (2003-12-30)
+
+- Image() now displays the image at 72 dpi if no dimension is given.
+- Output() takes a string as second parameter to indicate destination.
+- Open() is now called automatically by AddPage().
+- Inserting remote JPEG images doesn't generate an error any longer.
+- Decimal separator is forced to dot in the constructor.
+- Added several encodings (Turkish, Thai, Hebrew, Ukrainian and Vietnamese).
+- The last line of a right-aligned MultiCell() was not correctly aligned if it was terminated by a carriage return.
+- No more error message about already sent headers when outputting the PDF to the standard output from the command line.
+- The underlining was going too far for text containing characters \, ( or ).
+- $HTTP_ENV_VARS has been replaced by $HTTP_SERVER_VARS.
+
+
v1.51 (2002-08-03)
+
+- Type1 font support.
+- Added Baltic encoding.
+- The class now works internally in points with the origin at the bottom in order to avoid two bugs occurring with Acrobat 5: * The line thickness was too large when printed under Windows 98 SE and ME. * TrueType fonts didn't appear immediately inside the plug-in (a substitution font was used), one had to cause a window refresh to make them show up.
+- It's no longer necessary to set the decimal separator as dot to produce valid documents.
+- The clickable area in a cell was always on the left independently from the text alignment.
+- JPEG images in CMYK mode appeared in inverted colors.
+- Transparent PNG images in grayscale or true color mode were incorrectly handled.
+- Adding new fonts now works correctly even with the magic_quotes_runtime option set to on.
+
+
v1.5 (2002-05-28)
+
+- TrueType font (AddFont()) and encoding support (Western and Eastern Europe, Cyrillic and Greek).
+- Added Write() method.
+- Added underlined style.
+- Internal and external link support (AddLink(), SetLink(), Link()).
+- Added right margin management and methods SetRightMargin(), SetTopMargin().
+- Modification of SetDisplayMode() to select page layout.
+- The border parameter of MultiCell() now lets choose borders to draw as Cell().
+- When a document contains no page, Close() now calls AddPage() instead of causing a fatal error.
+
+
v1.41 (2002-03-13)
+
+- Fixed SetDisplayMode() which no longer worked (the PDF viewer used its default display).
+
+
v1.4 (2002-03-02)
+
+- PHP3 is no longer supported.
+- Page compression (SetCompression()).
+- Choice of page format and possibility to change orientation inside document.
+- Added AcceptPageBreak() method.
+- Ability to print the total number of pages (AliasNbPages()).
+- Choice of cell borders to draw.
+- New mode for Cell(): the current position can now move under the cell.
+- Ability to include an image by specifying height only (width is calculated automatically).
+- Fixed a bug: when a justified line triggered a page break, the footer inherited the corresponding word spacing.
+
+
v1.31 (2002-01-12)
+
+- Fixed a bug in drawing frame with MultiCell(): the last line always started from the left margin.
+- Removed Expires HTTP header (gives trouble in some situations).
+- Added Content-disposition HTTP header (seems to help in some situations).
+
+
v1.3 (2001-12-03)
+
+- Line break and text justification support (MultiCell()).
+- Color support (SetDrawColor(), SetFillColor(), SetTextColor()). Possibility to draw filled rectangles and paint cell background.
+- A cell whose width is declared null extends up to the right margin of the page.
+- Line width is now retained from page to page and defaults to 0.2 mm.
+- Added SetXY() method.
+- Fixed a passing by reference done in a deprecated manner for PHP4.
+
+
v1.2 (2001-11-11)
+
+- Added font metric files and GetStringWidth() method.
+- Centering and right-aligning text in cells.
+- Display mode control (SetDisplayMode()).
+- Added methods to set document properties (SetAuthor(), SetCreator(), SetKeywords(), SetSubject(), SetTitle()).
+- Possibility to force PDF download by browser.
+- Added SetX() and GetX() methods.
+- During automatic page break, current abscissa is now retained.
+
+
v1.11 (2001-10-20)
+
+- PNG support doesn't require PHP4/zlib any more. Data are now put directly into PDF without any decompression/recompression stage.
+- Image insertion now works correctly even with magic_quotes_runtime option set to on.
+
+
v1.1 (2001-10-07)
+
+- JPEG and PNG image support.
+
+
v1.01 (2001-10-03)
+
+- Fixed a bug involving page break: in case when Header() doesn't specify a font, the one from previous page was not restored and produced an incorrect document.
+
+__construct([string orientation [, string unit [, mixed size]]])
+
Descrizione
+Si tratta del costruttore della classe. Permette di impostare il formato pagina,
+l'orientamento e l'unità di misura utilizzata in tutti i metodi (eccetto per la
+dimensione dei font).
+
Parametri
+
+
orientation
+
+Orientamento pagina di default. Possibili valori sono (case insensitive):
+
+
P o Portrait
+
L o Landscape
+
+Il valore di default è P.
+
+
unit
+
+Unità di misura. Possibili valori sono:
+
+
pt: punti
+
mm: millimetri
+
cm: centimetri
+
in: pollici
+
+Un punto equivale a 1/72 di pollice, cioè circa 0.35 mm (un pollice corrisponde a
+2.54 cm). Si tratta di una misura molto comune in tipografia; la dimensione dei font
+è espressa in questa unità.
+
+
+Il valore di default è mm.
+
+
size
+
+Il formato utilizzato per la pagina. Può essere uno dei seguenti valori (case insensitive):
+
+
A3
+
A4
+
A5
+
Letter
+
Legal
+
+o un formato personalizzato nella forma di array bidimensionale contenente la larghezza e
+l'altezza (espressa nell'unità di misura data da unit).
+
+
+Il valore di default è A4.
+
+
+
Esempio
+Esempio di pagina con formato personalizzato pari a 100x150 mm:
+
+Quando viene raggiunta la condizione per un'interruzione di pagina, viene chiamato il metodo e,
+a seconda del valore restituito, l'interruzione viene eseguita o meno. L'implementazione di
+default restituisce un valore secondo la modalità selezionata in SetAutoPageBreak().
+
+Questo metodo viene chiamato automaticamente e non dovrebbe venire chiamato direttamente
+dall'applicazione.
+
Esempio
+Il metodo viene sovrascritto in una classe ereditata allo scopo di ottenere un layout su 3 colonne:
+
+
class PDF extends FPDF
+{
+var $col = 0;
+
+function SetCol($col)
+{
+ // Muove la posizione ad una colonna
+ $this->col = $col;
+ $x = 10+$col*65;
+ $this->SetLeftMargin($x);
+ $this->SetX($x);
+}
+
+function AcceptPageBreak()
+{
+ if($this->col<2)
+ {
+ // Va alla colonna successiva
+ $this->SetCol($this->col+1);
+ $this->SetY(10);
+ return false;
+ }
+ else
+ {
+ // Ritorna alla prima colonna ed esegue una interruzione di pagina
+ $this->SetCol(0);
+ return true;
+ }
+}
+}
+
+$pdf = new PDF();
+$pdf->AddPage();
+$pdf->SetFont('Arial','',12);
+for($i=1;$i<=300;$i++)
+ $pdf->Cell(0,5,"Line $i",0,1);
+$pdf->Output();
+AddFont(string family [, string style [, string file]])
+
Descrizione
+Importa un font TrueType, OpenType o Type1 e lo rende disponibile. E' necessario generare prima un
+file di definizione di font con la utility MakeFont.
+
+Il file di definizione (e lo stesso file del font quando compreso) deve essere presente nella
+directory delle fonts. Se non può essere trovato, viene generato l'errore "Could not include
+font definition file".
+
Parametri
+
+
family
+
+Famiglia del font. Il nome può essere scelto arbitrariamente. Se viene indicato un nome di una famiglia
+standard, verrà sovrascritto il font corrispondente.
+
+
style
+
+Stile del font. Possibili valori sono (case insensitive):
+
+
stringa vuota: normale
+
B: grassetto
+
I: corsivo
+
BI o IB: grassetto corsivo
+
+Il valore di default è normale.
+
+
file
+
+Il file di definizione del font.
+
+Per default, il nome viene costruito dalla famiglia e dallo stile, in minuscolo e senza spazi.
+
+Crea un nuovo link interno e restituisce il suo identificatore. Un link interno è un'area
+cliccabile che reindirizza verso un'altra posizione all'interno del documento.
+
+L'identificatore può essere passato a Cell(), Write(), Image() o Link(). La destinazione è
+definita con SetLink().
+
+AddPage([string orientation [, mixed size [, int rotation]]])
+
Descrizione
+Aggiunge una nuova pagina al documento. Se è già presente una pagina viene chiamato prima il
+metodo Footer() per inserire il piè d ipagina. Quindi viene aggiunta la pagina, la posizione
+corrente viene impostata nell'angolo superiore sinistro, tenendo conto del margine superiore e
+sinistro, quindi viene chiamato Header() per visualizzare l'intestazione.
+
+Il font impostato prima della chiamata viene ripristinato automaticamente. Non c'è bisogno di
+chiamare di nuovo SetFont() se si vuole continuare con lo stesso font. Lo stesso dicasi per
+colori e larghezza di riga.
+
+L'origine del sistema di coordinate è nell'angolo superiore sinistro e l'incremento delle
+ordinate fa muovere verso il basso.
+
Parametri
+
+
orientation
+
+Orientamento della pagina. Possibili valori sono (case insensitive):
+
+
P o Portrait
+
L o Landscape
+
+Il valore di default è quello passato dal costruttore.
+
+
size
+
+Il formato utilizzato per la pagina. Può essere uno dei seguenti valori (case insensitive):
+
+
A3
+
A4
+
A5
+
Letter
+
Legal
+
+o un formato personalizzato nella forma di array bidimensionale contenente la larghezza e
+l'altezza (espressa nell'unità di misura data da unit).
+
+
+Il valore di default è A4.
+
+
rotation
+
+Angolo con cui ruotare la pagina. Deve essere un multiplo di 90; valori positivi
+indicano una rotazione in senso orario. Il valore di default è 0.
+
+Definisce un alias per il numero totale di pagine. Sarà sostituito alla chiusura del documento.
+
Parametri
+
+
alias
+
+L'alias. Valore di default: {nb}.
+
+
+
Esempio
+
+
class PDF extends FPDF
+{
+function Footer()
+{
+ // Va a 1.5 cm dal fondo della pagina
+ $this->SetY(-15);
+ // Seleziona Arial corsivo 8
+ $this->SetFont('Arial','I',8);
+ // Stampa il numero di pagina corrente e totale
+ $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
+}
+}
+
+$pdf = new PDF();
+$pdf->AliasNbPages();
+Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]])
+
Descrizione
+Stampa una cella (area rettangolare) con bordi, colore di sfondo e stringa di caratteri opzionali.
+L'angolo superiore sinistro della cella corrisponde alla posizione corrente. Il testo può essere
+allineato o centrato. Dopo la chiamata, la posizione corrente si sposta a destra o sulla linea
+successiva. E' possibile inserire un link sul testo.
+
+Se l'interruzione di pagina automatica è abilitata e la cella va oltre i limiti, viene inserita una
+interruzione di pagina prima dell'output.
+
Parametri
+
+
w
+
+Larghezza della cella. Se 0, la cella si estende dalla parte del margine destro.
+
+
h
+
+Altezza della cella.
+Valore di default: 0.
+
+
txt
+
+Stringa da stampare.
+Valore di default: stringa vuota.
+
+
border
+
+Indica se bisogna tracciare i bordi attorno alla cella. Il valore può essere sia un numero:
+
+
0: nessun bordo
+
1: cornice
+
+o una stringa contenente alcuni o tutti i seguenti caratteri (in qualsiasi ordine):
+
+
L: sinistro
+
T: superiore
+
R: destro
+
B: inferiore
+
+Valore di default: 0.
+
+
ln
+
+Indica la posizione corrente dopo la chiamata. Valori possibili sono:
+
+
0: a destra
+
1: all'inizio della linea successiva
+
2: in basso
+
+Inserire 1 equivale a inserire 0 e chiamare Ln() immediatamente dopo.
+Valore di default: 0.
+
+
align
+
+Permette di centrare o allineare il testo. Possibili valori sono:
+
+
L o stringa vuota: allineamento a sinistra (valore di default)
+
C: centrato
+
R: allineamento a destra
+
+
+
fill
+
+Indica se lo sfondo della cella deve essere disegnato (true) o deve essere
+trasparente (false).
+Valore di default: false.
+
+
link
+
+L'URL o l'identificatore restituito da AddLink().
+
+
+
Esempio
+
+
// Imposta il font
+$pdf->SetFont('Arial','B',16);
+// Muove a 8 cm dalla destra
+$pdf->Cell(80);
+// Testo centrato in una cella di 20*10 mm e interruzione di linea
+$pdf->Cell(20,10,'Title',1,1,'C');
+Chiude il documento PDF. Non è necessario chiamare questo metodo esplicitamente, perché Output()
+lo fa automaticamente.
+
+Se il documento non contiene pagine, viene chiamato AddPage() per evitare di ottenere un documento
+non valido.
+
+Questo metodo viene chiamato automaticamente in caso di errore fatale; assieme al messaggio fornito
+viene semplicemente generata un'eccezione.
+Una classe ereditata potrebbe sovrascriverlo personalizzando la gestione degli errori, ma il metodo
+non dovrebbe mai tornare, altrimenti il documento risultante sarebbe probabilmente non valido.
+
+Questo metodo viene utilizzato per disegnare il piè di pagina. Viene chiamato automaticamente
+da AddPage() e Close() e non dovrebbe venire chiamato direttamente dall'applicazione.
+L'implementazione in FPDF è lasciata vuota, quindi è possibile subclassarla e sovrascrivere
+il metodo se si desidera un processo particolare.
+
Esempio
+
+
class PDF extends FPDF
+{
+function Footer()
+{
+ // Va a 1.5 cm dal fondo della pagina
+ $this->SetY(-15);
+ // Seleziona Arial corsivo 8
+ $this->SetFont('Arial','I',8);
+ // Stampa il numero di pagina centrato
+ $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
+}
+}
+Questo metodo viene utilizzato per disegnare l'intestazione della pagina. Viene chiamato automaticamente
+da AddPage() e non dovrebbe venire chiamato direttamente dall'applicazione. L'implementazione in FPDF
+è lasciata vuota, quindi bisogna subclassarla e sovrascriverne il metodo se si desidera un processo particolare.
+
Esempio
+
+
class PDF extends FPDF
+{
+function Header()
+{
+ // Seleziona Arial grassetto 15
+ $this->SetFont('Arial','B',15);
+ // Muove verso destra
+ $this->Cell(80);
+ // Titolo in riquadro
+ $this->Cell(30,10,'Title',1,0,'C');
+ // Interruzione di linea
+ $this->Ln(20);
+}
+}
+Image(string file [, float x [, float y [, float w [, float h [, string type [, mixed link]]]]]])
+
Descrizione
+Permette di inserire un immagine nella pagina. Le dimensioni possono essere specificate nei seguenti modi:
+
+
specificando larghezza e altezza (espresse nell'unità di misura scelte o dpi)
+
specificando una sola dimensione, l'altra sarà calcolata automaticamente in maniera da mantenere le proporzioni originali
+
senza specificare le dimensioni, in questo caso l'immagine sarà inserita a 96 dpi
+
+I formati inseribili sono JPEG, PNG e GIF. Per il supporto al formato GIF è richiesta l'estensione GD.
+
+
+Per le JPEG, sono consentiti i seguenti colori:
+
+
scala di grigio
+
true colors (24 bits)
+
CMYK (32 bits)
+
+Per le PNG, sono consentiti:
+
+
scala di grigio a 8 bits (256 livelli)
+
indexed colors
+
true colors (24 bits)
+
+Nel caso di GIF animata, verrà utilizzato solo il primo frame.
+
+La trasparenza è supportata.
+
+Se il formato dell'immagine non viene specificato sarà preso dall'estensione del file.
+
+E' possibile inserire un link sull'immagine.
+
+Osservazione: se un immagine è usata più volte, solo una copia sarà inserita nel file.
+
Parametri
+
+
file
+
+Nome del file che contiene l'immagine.
+
+
x
+
+Ascissa dell'angolo superiore-sinistro. Se non specificata o pari a null, viene utilizzata
+l'ascissa corrente.
+
+
y
+
+Ordinata dell'angolo superiore-sinistro. Se non specificata o pari a null, viene utilizzata
+l'ordinata corrente; inoltre, se necessario, prima viene inserita un'interruzione di pagina (in caso
+fosse abilita l'interruzione di pagina automatica) e, dopo la chiamata, le coordinate correnti vengono
+spostate al di sotto dell'immagine.
+
+
w
+
+Larghezza dell'immagine nella pagina. Tre casi:
+
+
Se positivo, il valore rappresenta la larghezza espressa nell'unità di misura specificata
+
Se negativo, il valore assoluto rappresenta la risoluzione orizzontale espressa in dpi
+
Se non viene specificata o uguale a zero, sarà calcolata automaticamente
+
+
+
h
+
+Altezza dell'immagine nella pagina. Tre casi:
+
+
Se positivo, il valore rappresenta l'altezza espressa nell'unità di misura specificata
+
Se negativo, il valore assoluto rappresenta la risoluzione verticale espressa in dpi
+
Se non viene specificata o uguale a zero, sarà calcolata automaticamente
+
+
+
type
+
+Formato immagine. I valori possibili sono (case insensitive): JPG, JPEG, PNG e
+GIF.
+Se non specificato, il tipo sarà riferito all'estensione del file.
+
+
link
+
+URL o identificatore generato da AddLink().
+
+
+
Esempio
+
+
// Inserisce il logo nell'angolo in alto a sinistra, con risoluzione di 300 dpi
+$pdf->Image('logo.png',10,10,-300);
+// Inserisce un'immagine dinamica da URL
+$pdf->Image('http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World',60,30,90,0,'PNG');
+
+
diff --git a/public/userarea/fpdf/doc/index.htm b/public/userarea/fpdf/doc/index.htm
new file mode 100644
index 0000000..a99b594
--- /dev/null
+++ b/public/userarea/fpdf/doc/index.htm
@@ -0,0 +1,59 @@
+
+
+
+
+Manuale di riferimento di FPDF 1.84
+
+
+
+
Manuale di riferimento di FPDF 1.84
+__construct - costruttore
+AcceptPageBreak - ammette o meno l'interruzione di pagina automatico
+AddFont - aggiunge un nuovo font
+AddLink - crea un link interno
+AddPage - aggiunge una nuova pagina
+AliasNbPages - definisce un alias per il numero di pagine
+Cell - stampa una cella
+Close - chiude il documento
+Error - errore fatale
+Footer - piè di pagina
+GetPageHeight - restituisce l'altezza della pagina corrente
+GetPageWidth - restituisce la larghezza della pagina corrente
+GetStringWidth - calcola la lungheza di una stringa
+GetX - calcola la posizione corrente di x
+GetY - calcola la posizione corrente di y
+Header - intestazione della pagina
+Image - disegna un'immagine
+Line - traccia una linea
+Link - inserisce un link
+Ln - interruzione di linea
+MultiCell - stampa del testo con interruzioni di linea
+Output - salva o invia il documento
+PageNo - numero di paginaì
+Rect - disegna un rettangolo
+SetAuthor - imposta l'autore del documento
+SetAutoPageBreak - imposta la modalità di interruzione di pagina automatica
+SetCompression - attiva o disattiva la compressione
+SetCreator - imposta il creatore del document
+SetDisplayMode - imposta la modalità di visualizzazione
+SetDrawColor - imposta il colore di disegno
+SetFillColor - imposta il colore di riempimento
+SetFont - imposta il font
+SetFontSize - imposta la dimensione del font
+SetKeywords - associa keywords al documento
+SetLeftMargin - imposta il margine sinistro
+SetLineWidth - imposta lo spessore della linea
+SetLink - imposta la destinazione di un link interno
+SetMargins - imposta i margini
+SetRightMargin - imposta il margine destro
+SetSubject - imposta il soggetto del documento
+SetTextColor - imposta il colore del testo
+SetTitle - imposta il titolo del documento
+SetTopMargin - imposta il margine superiore
+SetX - imposta la posizione corrente di x
+SetXY - imposta le posizioni correnti di x e y
+SetY - imposta la posizione corrente di y
+Text - stampa una stringa
+Write - stampare testo continuo
+
+
diff --git a/public/userarea/fpdf/doc/line.htm b/public/userarea/fpdf/doc/line.htm
new file mode 100644
index 0000000..d5601ba
--- /dev/null
+++ b/public/userarea/fpdf/doc/line.htm
@@ -0,0 +1,38 @@
+
+
+
+
+Line
+
+
+
+
+Inserisce un link in un'area rettangolare della pagina. I links su immagini o testo generalmente
+vengonogenerally inseriti tramite Cell(), Write() o Image(), ma questo metodo può risultare utile
+nel caso si volesse definire un'area cliccabile all'interno di un'immagine.
+
Parametri
+
+
x
+
+Ascissa dell'angolo in alto a sinistra del rettangolo.
+
+
y
+
+Ordinata dell'angolo in alto a sinistra del rettangolo.
+
+
w
+
+Larghezza del rettangolo.
+
+
h
+
+Altezza del rettangolo.
+
+
link
+
+L'URL o l'identificatore restituito da AddLink().
+
+Questo metodo permette di stampare del testo con interruzioni di linea. Possono essere automatiche
+(non appena il testo raggiunge il margine destro della cella) o esplicite (tramite il carattere \n).
+Vengono inserite tante celle quante necessarie, una sotto l'altra.
+
+Il testo può essere allineato, centrato o giustificato. E' possibile inserire i bordi e lo sfondo al
+blocco di celle.
+
Parametri
+
+
w
+
+Larghezza delle celle. Se 0, si estendono dalla parte del margine destro della pagina.
+
+
h
+
+Altezza delle celle.
+
+
txt
+
+Stringa da stampare.
+
+
border
+
+Indica se bisogna disegnare i bordi attorno al blocco di celle. Il valore può essere sia un numero:
+
+
0: nessun bordo
+
1: cornice
+
+o una stringa contenente alcuni o tutti i seguenti caratteri (in qualsiasi ordine):
+
+
L: sinistro
+
T: superiore
+
R: destro
+
B: inferiore
+
+Valore di default: 0.
+
+
align
+
+Imposta l'allineamento del testo. Possibili valori sono:
+
+
L: allineamento a sinistra
+
C: centrato
+
R: allienamento a destra
+
J: giustificazione (valore di default)
+
+
+
fill
+
+Indica se lo sfondo della cella deve essere disegnato (true) o deve essere
+trasparente (false).
+Valore di default: false.
+
+string Output([string dest [, string name [, boolean isUTF8]]])
+
Descrizione
+Passa il documento a una destinazione: stringa, file locale o browser. Nell'ultimo
+caso, verrà usato il plug-in (se presente), oppure sarà forzata l'apertura di una
+finestra di download ("Salva con nome").
+Se necessario, il metodo richiama prima Close() per chiudere il documento.
+
Parametri
+
+
dest
+
+Destinazione dove mandare il documento. Può essere specificato uno dei seguenti valori:
+
+
I: manda il 'file inline' al browser. Il plug-in sarà utilizzato se presente.
+
D: manda al browser e forza il download del file con il nome dato con name.
+
F: salva il file in locale con il nome dato con name.
+
S: ritorna il documento come stringa.
+
+Il valore predefinito è I.
+
+
name
+
+Il nome del file. È ignorato nel caso di destinazione S.
+Il valore predefinito è doc.pdf.
+
+
isUTF8
+
+Indica se name segue la codifica ISO-8859-1 (false) o UTF-8 (true).
+Usato solo per le destinazioni I e D.
+Il valore predefinito è false.
+
+SetAutoPageBreak(boolean auto [, float margin])
+
Descrizione
+Abilita o disabilita la modalità di interruzione di pagina automatica. Se abilitata, il secondo
+parametro rappresenta la distanza dal fondo della pagina, la quale definisce il limite di
+attivazione. Per default, la modalità è on e il margine è 2 cm.
+
Parametri
+
+
auto
+
+Boolean indicante se la modalità deve essere on o off.
+
+Attiva o disattiva la compressione delle pagine. Se attiva, la rappresentazione interna di ogni
+pagina viene compressa, che porta ad un valore di compressione di 2 per il documento risultante.
+
+La compressione è attiva per default.
+
+
+Nota: per questa caratteristica è richiesta l'estensione Zlib. Se non presente, la compressione
+verrà disattivata.
+
Parametri
+
+
compress
+
+Boolean indicante se bisogna attivare la compressione.
+
+Definisce la modalità in cui il documento verrà mostrato sul viewer. E' possibile impostare il
+livello dello zoom: le pagine possono essere mostrate interamente sullo schermo, a tutta pagina,
+utilizzare le dimensioni reali, rappresentate in scala con un fattore dello zoom specifico oppure
+utilizzare i valori di default del viewer (come configurato nel menu Preferences di Adobe Reader).
+E' possibile specificare anche il layout di pagina: una per volta, visualizzazione continua, due
+colonne o default del viewer.
+
Parametri
+
+
zoom
+
+Lo zoom da usare. Può essere uno dei seguenti valori di stringa:
+
+
fullpage: mostra a schermo l'intera pagina
+
fullwidth: a tutta pagina
+
real: utilizza le dimensioni reali (equivalente a zoom=100%)
+
default: utilizza la modalità di default del viewer
+
+o un numero indicante il livello dello zoom da usare.
+
+
layout
+
+Il layout di pagina. Possibili valori sono:
+
+
single: mostra una pagina per volta
+
continuous: mostra le pagine in modo continuo
+
two: mostra due pagine su due colonne
+
default: utilizza la modalità di default del viewer
+Definisce il colore usato per tutte le operazioni di disegno (linee, rettangoli e bordi delle celle).
+Può essere espresso in componenti RGB o scala di grigi. Il metodo può essere chiamato prima che la
+prima pagina sia creata per mantenere il valore di pagina in pagina.
+
Parametri
+
+
r
+
+Se g e b sono dati, indica il componente rosso; altrimenti indica il livello di grigio.
+Valori tra 0 e 255.
+
+Definisce il colore utilizzato per tutte le operazioni di riempimento (rettangoli riempiti e
+sfondo delle celle). Può essere espresso in componenti RGB o scala di grigi. Il metodo può
+essere chiamato prima che la prima pagina venga creata per mantenere il valore di pagina in pagina.
+
Parametri
+
+
r
+
+Se g e b sono dati, indica il componente rosso; altrimenti indica il livello di grigio.
+Valori tra 0 e 255.
+
+SetFont(string family [, string style [, float size]])
+
Descrizione
+Imposta il font utilizzato per stampare stringhe di caratteri. E' obbligatorio chiamare questo
+metodo almeno una volta prima di stampare del testo.
+
+Il font può essere sia uno standard oppure uno aggiunto tramite il metodo AddFont(). I fonts
+Standard utilizzano la codifica Windows cp1252 (Western Europe).
+
+Il metodo può essere chiamato prima della creazione della prima pagina per mantenere il font di
+pagina in pagina.
+
+Se si vuole solo cambiare la dimensione del font, è più semplice chiamare SetFontSize().
+
+
+Nota: i files di definizione devono essere accessibili. Vengono ricercati rispettivamente:
+
+
Nella directory definita dalla costante FPDF_FONTPATH (se la costante esiste)
+
Nella directory delle fonts che si trova nella stessa directory del file fpdf.php (se la directory esiste)
+
In tutte le directories accessibili tramite la direttiva include()
+
+Esempio per il caso in cui venga definita la costante FPDF_FONTPATH:
+
+Se non viene trovato il file corrispondente a quello richiesto, verrà generato l'errore
+"Could not include font definition file".
+
Parametri
+
+
family
+
+Famiglia del font. Può essere sia un nome definito da AddFont() o una delle famiglie standard (case
+insensitive):
+
+
Courier (fixed-width)
+
Helvetica o Arial (sinonimi; sans serif)
+
Times (serif)
+
Symbol (symbolic)
+
ZapfDingbats (symbolic)
+
+E' anche possibile passare una stringa vuota. In questo caso, viene conservata la famiglia corrente.
+
+
style
+
+Stile del font. Possibili valori sono (case insensitive):
+
+
stringa vuota: normale
+
B: grassetto
+
I: corsivo
+
U: sottolineato
+
+o qualsiasi combinazione. Il valore di default è normale.
+Non è possibile applicare gli stili grassetto e corsivo a Symbol e ZapfDingbats.
+
+
size
+
+Dimensione del font in punti.
+
+Il valore di default è la dimensione corrente. Se non è stata specificata nessuna dimensione dall'inizio
+del documento, viene preso il valore 12.
+
+
+
Esempio
+
+
// Times normale 12
+$pdf->SetFont('Times');
+// Arial grassetto 14
+$pdf->SetFont('Arial','B',14);
+// Rimuove il grassetto
+$pdf->SetFont('');
+// Times grassetto, corsivo e sottolineato 14
+$pdf->SetFont('Times','BIU');
+Imposta il margine sinistro. Il metodo può essere chiamato prima della creazione della prima pagina.
+
+Se l'ascissa corrente va fuori del margine, viene riportata nel margine.
+
+Definisce lo spessore della linea. Per default, il valore è di 0.2 mm. Il metodo può essere
+chiamato prima della creazione della prima pagina del documento per mantenere il valore di pagina in pagina.
+
+Definisce il colore utilizzato per il testo. Può essere espresso in componenti RGB o in scala di grigi.
+Il metodo può essere chiamato prima della creazione della prima pagina per mantenere il valore di
+pagina in pagina.
+
Parametri
+
+
r
+
+Se g e b sono dati, indica il componente rosso; altrimenti indica il livello di grigio.
+Valori tra 0 e 255.
+
+Definisce l'ascissa e l'ordinata della posizione corrente. Se i valori passati sono negativi,
+sono relativi rispettivamente alla destra ed al fondo della pagina.
+
+Stampa una stringa di caratteri. L'origine è alla sinistra del primo carattere, sulla baseline.
+Questo metodo permette di posizionare una stringa con precisione sulla pagina, ma di norma è
+più semplice utilizzare Cell(), MultiCell() o Write() che sono i metodi standard per stampare
+del testo.
+
+Questo metodo stampa del testo dalla posizione corrente. Quando viene raggiunto il margine destro (o viene
+incontrato il carattere \n) viene inserita una interruzione di linea e il testo continua dal margine sinistro.
+All'uscita del metodo, la posizione corrente è lasciata alla fine del testo.
+
+E' possibile inserire un link nel testo.
+
Parametri
+
+
h
+
+Altezza della linea.
+
+
txt
+
+Stringa da stampare.
+
+
link
+
+L'URL o l'identificatore restituito da AddLink().
+
+
+
Esempio
+
+
// Inizia con un font normale
+$pdf->SetFont('Arial','',14);
+$pdf->Write(5,'Visit ');
+// Quindi inserisce un link blu sottolineato
+$pdf->SetTextColor(0,0,255);
+$pdf->SetFont('','U');
+$pdf->Write(5,'www.fpdf.org','http://www.fpdf.org');
+Dopo aver incluso la libreria, creiamo un oggetto FPDF.
+Il costruttore viene usato, qui sopra, con i valori di default:
+le pagine sono formato A4, verticale, e con unità di misura in
+millimetri. Sarebbe possibile specificarli esplicitamente con:
+
+
$pdf = new FPDF('P','mm','A4');
+
+
+E' possibile usare il formato orrizzontale (L), altri tipi di formati (come A3
+e A5) e unità di misura (pt, cm, in).
+
+
+Per il momento non ci sono altri formato pagina. Dobbiamo aggiungerlo con AddPage(). L'origine
+è all'angolo superiore-sinistro e la posizione attuale è messa per difetto a 1 cm dai confini; i
+margini possono essere cambiati con SetMargins().
+
+
+Prima che si possa stampare il testo, è obbligatorio selezionare una fonte con SetFont().
+Scegliamo Arial bold (grassetto) 16:
+
+
$pdf->SetFont('Arial','B',16);
+
+
+Avremmo potuto specificare italic (corsivo) con I, sottolineato con U o un font regolare con una stringa
+vuota (o nessuna combinazione). Notare che la grandezza dei font è data in punti, non i millimetri
+(o un'altra unità utente); è l'unica eccezione. Gli altri font standard sono Times, Courier, Symbol
+e ZapfDingbats.
+
+Possiamo ora stampare una cella con Cell(). Una cella è un'area rettangolare, possibilmente
+incorniciata che contiene del testo. L'output è alla posizione attuale. Specifichiamo le sue
+dimensioni, il suo testo (centrato o allineato), se i bordi debbano essere disegnati, e dove
+la posizione attuale si debba muovere dopo (a destra, sotto o all'inizio della prossima linea).
+Per aggiungere una cornice, si fa così:
+
+
$pdf->Cell(40,10,'Hello World !',1);
+
+
+Per aggiungere una prossima nuova cella con il testo centrato e andando a capo, dobbiamo
+fare così:
+
+
$pdf->Cell(60,10,'Powered by FPDF.',0,1,'C');
+
+
+Note: L'interruzione di linea può essere fatta anche con Ln(). Questo metodo permette di
+specificare anche l'altezza dell'interruzione.
+
+
+Finalmente il documento è chiuso e spedito al browser con Output(). Ora possiamo
+salvarlo in un file.
+
+
+Attenzione: quando, nel caso, il PDF viene spedito al browser, non deve essere processato
+nient'altro, ne prima ne dopo (l'ultimo spazio o ritorno a capo non conta). Se si inoltra
+qualcos'altro prima, riceveremo il messaggio di errore: "Alcuni dati sono stati già passati
+al browser, non è possibile inviare il file PDF" o qualcosa del genere.
+Se inseriamo qualcos'altro dopo, il browser potrebbe visualizzare un pagina bianca.
+
+
diff --git a/public/userarea/fpdf/tutorial/tuto1.php b/public/userarea/fpdf/tutorial/tuto1.php
new file mode 100644
index 0000000..3ab55a1
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto1.php
@@ -0,0 +1,9 @@
+AddPage();
+$pdf->SetFont('Arial','B',16);
+$pdf->Cell(40,10,'Hello World!');
+$pdf->Output();
+?>
diff --git a/public/userarea/fpdf/tutorial/tuto2.htm b/public/userarea/fpdf/tutorial/tuto2.htm
new file mode 100644
index 0000000..a3af606
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto2.htm
@@ -0,0 +1,80 @@
+
+
+
+
+Intestazione, piè di pagina, cambio pagina e immagini
+
+
+
+
Intestazione, piè di pagina, cambio pagina e immagini
+Ecco un esempio di due pagine con intestazione, piè di pagina, e logo:
+
+
<?php
+require('fpdf.php');
+
+class PDF extends FPDF
+{
+// Page header
+function Header()
+{
+ // Logo
+ $this->Image('logo.png',10,6,30);
+ // Arial bold 15
+ $this->SetFont('Arial','B',15);
+ // Move to the right
+ $this->Cell(80);
+ // Title
+ $this->Cell(30,10,'Title',1,0,'C');
+ // Line break
+ $this->Ln(20);
+}
+
+// Page footer
+function Footer()
+{
+ // Position at 1.5 cm from bottom
+ $this->SetY(-15);
+ // Arial italic 8
+ $this->SetFont('Arial','I',8);
+ // Page number
+ $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
+}
+}
+
+// Instanciation of inherited class
+$pdf = new PDF();
+$pdf->AliasNbPages();
+$pdf->AddPage();
+$pdf->SetFont('Times','',12);
+for($i=1;$i<=40;$i++)
+ $pdf->Cell(0,10,'Printing line number '.$i,0,1);
+$pdf->Output();
+?>
+Questo esempio fa uso dei metodi Header() e Footer() per processare le intestazioni e
+i piè di pagina. Sono richiamati automaticamente. Esistono già nella classe FPDF ma non fanno nulla,
+quindi dobbiamo estendere la classe e fare un override di questi metodi.
+
+
+Il logo è stampato con il metodo Image() specificando il suo angolo in alto a sinistra e
+la sua larghezza. L'altezza è calcolata automaticamente per rispettare le proporzioni dell'immagine.
+
+
+Per stampare il numero della pagina, un valore null è passato alla larghezza della cella. Significa che la cella
+dovrebbe estendersi fino al margine destro della pagina; questo è comodo per centrare il testo. Il numero della pagina
+corrente è ritornato dal metodo PageNo(); ed il numero totale delle pagine è ottenibile
+attraverso il codice speciale {nb} che è sostituito nel testo quando il documento è concluso
+(a condizione di chiamare prima AliasNbPages()).
+
+Nota che l'uso del metodo SetY() che permette di posizionarsi ad una posizione assoluta nella
+pagina, parte dall'inizio o dal fondo della pagina.
+
+
+Qui si utilizza un'altra caratteristica interessante: l'interruzione di pagina automatica. Non appena la cella sorpassa
+un limite nella pagina (di predefinito sono 2 centimetri dal fondo), si lancia l'interruzione
+e il font è ripristinato. Sebbene l'intestazione ed il piè di pagina abbiano il loro font (Arial), il corpo
+continua con Times. Questo meccanismo di ripristino automatico si applica anche ai colori e alla larghezza della
+linea. Il limite a cui si evoca l'interruzione di pagina può essere impostato con SetAutoPageBreak().
+
+
diff --git a/public/userarea/fpdf/tutorial/tuto2.php b/public/userarea/fpdf/tutorial/tuto2.php
new file mode 100644
index 0000000..6a1b4f8
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto2.php
@@ -0,0 +1,41 @@
+Image('logo.png',10,6,30);
+ // Arial bold 15
+ $this->SetFont('Arial','B',15);
+ // Move to the right
+ $this->Cell(80);
+ // Title
+ $this->Cell(30,10,'Title',1,0,'C');
+ // Line break
+ $this->Ln(20);
+}
+
+// Page footer
+function Footer()
+{
+ // Position at 1.5 cm from bottom
+ $this->SetY(-15);
+ // Arial italic 8
+ $this->SetFont('Arial','I',8);
+ // Page number
+ $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
+}
+}
+
+// Instanciation of inherited class
+$pdf = new PDF();
+$pdf->AliasNbPages();
+$pdf->AddPage();
+$pdf->SetFont('Times','',12);
+for($i=1;$i<=40;$i++)
+ $pdf->Cell(0,10,'Printing line number '.$i,0,1);
+$pdf->Output();
+?>
diff --git a/public/userarea/fpdf/tutorial/tuto3.htm b/public/userarea/fpdf/tutorial/tuto3.htm
new file mode 100644
index 0000000..149c02d
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto3.htm
@@ -0,0 +1,115 @@
+
+
+
+
+Ritorno a capo e colori
+
+
+
+
Ritorno a capo e colori
+Continuiamo con un esempio in cui si stampano paragrafi giustificati. Si illustra anche l'uso
+dei colori.
+
+
<?php
+require('fpdf.php');
+
+class PDF extends FPDF
+{
+function Header()
+{
+ global $title;
+
+ // Arial bold 15
+ $this->SetFont('Arial','B',15);
+ // Calculate width of title and position
+ $w = $this->GetStringWidth($title)+6;
+ $this->SetX((210-$w)/2);
+ // Colors of frame, background and text
+ $this->SetDrawColor(0,80,180);
+ $this->SetFillColor(230,230,0);
+ $this->SetTextColor(220,50,50);
+ // Thickness of frame (1 mm)
+ $this->SetLineWidth(1);
+ // Title
+ $this->Cell($w,9,$title,1,1,'C',true);
+ // Line break
+ $this->Ln(10);
+}
+
+function Footer()
+{
+ // Position at 1.5 cm from bottom
+ $this->SetY(-15);
+ // Arial italic 8
+ $this->SetFont('Arial','I',8);
+ // Text color in gray
+ $this->SetTextColor(128);
+ // Page number
+ $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
+}
+
+function ChapterTitle($num, $label)
+{
+ // Arial 12
+ $this->SetFont('Arial','',12);
+ // Background color
+ $this->SetFillColor(200,220,255);
+ // Title
+ $this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
+ // Line break
+ $this->Ln(4);
+}
+
+function ChapterBody($file)
+{
+ // Read text file
+ $txt = file_get_contents($file);
+ // Times 12
+ $this->SetFont('Times','',12);
+ // Output justified text
+ $this->MultiCell(0,5,$txt);
+ // Line break
+ $this->Ln();
+ // Mention in italics
+ $this->SetFont('','I');
+ $this->Cell(0,5,'(end of excerpt)');
+}
+
+function PrintChapter($num, $title, $file)
+{
+ $this->AddPage();
+ $this->ChapterTitle($num,$title);
+ $this->ChapterBody($file);
+}
+}
+
+$pdf = new PDF();
+$title = '20000 Leagues Under the Seas';
+$pdf->SetTitle($title);
+$pdf->SetAuthor('Jules Verne');
+$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
+$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
+$pdf->Output();
+?>
+Il metodo GetStringWidth() permette di determinare la lunghezza di una stringa nel font corrente,
+è qui utilizzata per calcolare la posizione e la larghezza della cornice che circonda il titolo.
+Quando i colori sono impostati (attraverso SetDrawColor(), SetFillColor() e SetTextColor()) e lo
+spessore della linea è impostata ad 1 mm (invece che 0.2 di predefinito) con SetLineWidth(). Alla fine
+si mostra la cella (l'ultimo parametro a true indica che lo sfondo deve essere riempito).
+
+
+Il metodo utilizzato per stampare i paragrafi è MultiCell(). Ogni volta che una riga raggiunge
+l'estremità destra della cella, o se si raggiunge un ritorno a capo, si lancia un'interruzione di riga
+e si crea automaticamente una nuova cella creata sotto quella precedente. Il testo è giustificato in maniera
+predefinita.
+
+
+Si definiscono due proprietà del documento: il titolo (SetTitle()) e l'autore (SetAuthor()).
+Ci sono molti modi per mostrarli in un riproduttore di PDF. Il primo modo è aprire direttamente il PDF
+con il lettore PDF e visualizzare le proprietà del documento, spesso attraverso il menù File. A volte si può anche
+fare click con il tasto destro e selezionare Proprietà del documento (o qualcosa del genere). Un altro modo è di premere
+la combinazione Ctrl+D.
+
+
diff --git a/public/userarea/fpdf/tutorial/tuto3.php b/public/userarea/fpdf/tutorial/tuto3.php
new file mode 100644
index 0000000..3316ddb
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto3.php
@@ -0,0 +1,81 @@
+SetFont('Arial','B',15);
+ // Calculate width of title and position
+ $w = $this->GetStringWidth($title)+6;
+ $this->SetX((210-$w)/2);
+ // Colors of frame, background and text
+ $this->SetDrawColor(0,80,180);
+ $this->SetFillColor(230,230,0);
+ $this->SetTextColor(220,50,50);
+ // Thickness of frame (1 mm)
+ $this->SetLineWidth(1);
+ // Title
+ $this->Cell($w,9,$title,1,1,'C',true);
+ // Line break
+ $this->Ln(10);
+}
+
+function Footer()
+{
+ // Position at 1.5 cm from bottom
+ $this->SetY(-15);
+ // Arial italic 8
+ $this->SetFont('Arial','I',8);
+ // Text color in gray
+ $this->SetTextColor(128);
+ // Page number
+ $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
+}
+
+function ChapterTitle($num, $label)
+{
+ // Arial 12
+ $this->SetFont('Arial','',12);
+ // Background color
+ $this->SetFillColor(200,220,255);
+ // Title
+ $this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
+ // Line break
+ $this->Ln(4);
+}
+
+function ChapterBody($file)
+{
+ // Read text file
+ $txt = file_get_contents($file);
+ // Times 12
+ $this->SetFont('Times','',12);
+ // Output justified text
+ $this->MultiCell(0,5,$txt);
+ // Line break
+ $this->Ln();
+ // Mention in italics
+ $this->SetFont('','I');
+ $this->Cell(0,5,'(end of excerpt)');
+}
+
+function PrintChapter($num, $title, $file)
+{
+ $this->AddPage();
+ $this->ChapterTitle($num,$title);
+ $this->ChapterBody($file);
+}
+}
+
+$pdf = new PDF();
+$title = '20000 Leagues Under the Seas';
+$pdf->SetTitle($title);
+$pdf->SetAuthor('Jules Verne');
+$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
+$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
+$pdf->Output();
+?>
diff --git a/public/userarea/fpdf/tutorial/tuto4.htm b/public/userarea/fpdf/tutorial/tuto4.htm
new file mode 100644
index 0000000..3cac745
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto4.htm
@@ -0,0 +1,131 @@
+
+
+
+
+Multi-colonne
+
+
+
+
Multi-colonne
+Questo esempio è una variante del precedente e mostra come sia possibile distribuire il testo su più
+colonne.
+
+
<?php
+require('fpdf.php');
+
+class PDF extends FPDF
+{
+protected $col = 0; // Current column
+protected $y0; // Ordinate of column start
+
+function Header()
+{
+ // Page header
+ global $title;
+
+ $this->SetFont('Arial','B',15);
+ $w = $this->GetStringWidth($title)+6;
+ $this->SetX((210-$w)/2);
+ $this->SetDrawColor(0,80,180);
+ $this->SetFillColor(230,230,0);
+ $this->SetTextColor(220,50,50);
+ $this->SetLineWidth(1);
+ $this->Cell($w,9,$title,1,1,'C',true);
+ $this->Ln(10);
+ // Save ordinate
+ $this->y0 = $this->GetY();
+}
+
+function Footer()
+{
+ // Page footer
+ $this->SetY(-15);
+ $this->SetFont('Arial','I',8);
+ $this->SetTextColor(128);
+ $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
+}
+
+function SetCol($col)
+{
+ // Set position at a given column
+ $this->col = $col;
+ $x = 10+$col*65;
+ $this->SetLeftMargin($x);
+ $this->SetX($x);
+}
+
+function AcceptPageBreak()
+{
+ // Method accepting or not automatic page break
+ if($this->col<2)
+ {
+ // Go to next column
+ $this->SetCol($this->col+1);
+ // Set ordinate to top
+ $this->SetY($this->y0);
+ // Keep on page
+ return false;
+ }
+ else
+ {
+ // Go back to first column
+ $this->SetCol(0);
+ // Page break
+ return true;
+ }
+}
+
+function ChapterTitle($num, $label)
+{
+ // Title
+ $this->SetFont('Arial','',12);
+ $this->SetFillColor(200,220,255);
+ $this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
+ $this->Ln(4);
+ // Save ordinate
+ $this->y0 = $this->GetY();
+}
+
+function ChapterBody($file)
+{
+ // Read text file
+ $txt = file_get_contents($file);
+ // Font
+ $this->SetFont('Times','',12);
+ // Output text in a 6 cm width column
+ $this->MultiCell(60,5,$txt);
+ $this->Ln();
+ // Mention
+ $this->SetFont('','I');
+ $this->Cell(0,5,'(end of excerpt)');
+ // Go back to first column
+ $this->SetCol(0);
+}
+
+function PrintChapter($num, $title, $file)
+{
+ // Add chapter
+ $this->AddPage();
+ $this->ChapterTitle($num,$title);
+ $this->ChapterBody($file);
+}
+}
+
+$pdf = new PDF();
+$title = '20000 Leagues Under the Seas';
+$pdf->SetTitle($title);
+$pdf->SetAuthor('Jules Verne');
+$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
+$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
+$pdf->Output();
+?>
+Il metodo principale utilizzato è AcceptPageBreak(). Permette di accettare o no un'interruzione automatica di
+pagina. Rifiutandolo e alterando il margine alla posizione corrrente, si raggiunge il layout desiderato.
+
+Per il resto non ci sono molti cambiamenti; due proprietà sono state aggiunte alla classe per salvare
+il numero della colonna e la posizione quando inizia la colonna, e la chiamata a MultiCell() specifica
+una larghezza di 6 centimetri.
+
+
diff --git a/public/userarea/fpdf/tutorial/tuto4.php b/public/userarea/fpdf/tutorial/tuto4.php
new file mode 100644
index 0000000..c39b42c
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto4.php
@@ -0,0 +1,109 @@
+SetFont('Arial','B',15);
+ $w = $this->GetStringWidth($title)+6;
+ $this->SetX((210-$w)/2);
+ $this->SetDrawColor(0,80,180);
+ $this->SetFillColor(230,230,0);
+ $this->SetTextColor(220,50,50);
+ $this->SetLineWidth(1);
+ $this->Cell($w,9,$title,1,1,'C',true);
+ $this->Ln(10);
+ // Save ordinate
+ $this->y0 = $this->GetY();
+}
+
+function Footer()
+{
+ // Page footer
+ $this->SetY(-15);
+ $this->SetFont('Arial','I',8);
+ $this->SetTextColor(128);
+ $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
+}
+
+function SetCol($col)
+{
+ // Set position at a given column
+ $this->col = $col;
+ $x = 10+$col*65;
+ $this->SetLeftMargin($x);
+ $this->SetX($x);
+}
+
+function AcceptPageBreak()
+{
+ // Method accepting or not automatic page break
+ if($this->col<2)
+ {
+ // Go to next column
+ $this->SetCol($this->col+1);
+ // Set ordinate to top
+ $this->SetY($this->y0);
+ // Keep on page
+ return false;
+ }
+ else
+ {
+ // Go back to first column
+ $this->SetCol(0);
+ // Page break
+ return true;
+ }
+}
+
+function ChapterTitle($num, $label)
+{
+ // Title
+ $this->SetFont('Arial','',12);
+ $this->SetFillColor(200,220,255);
+ $this->Cell(0,6,"Chapter $num : $label",0,1,'L',true);
+ $this->Ln(4);
+ // Save ordinate
+ $this->y0 = $this->GetY();
+}
+
+function ChapterBody($file)
+{
+ // Read text file
+ $txt = file_get_contents($file);
+ // Font
+ $this->SetFont('Times','',12);
+ // Output text in a 6 cm width column
+ $this->MultiCell(60,5,$txt);
+ $this->Ln();
+ // Mention
+ $this->SetFont('','I');
+ $this->Cell(0,5,'(end of excerpt)');
+ // Go back to first column
+ $this->SetCol(0);
+}
+
+function PrintChapter($num, $title, $file)
+{
+ // Add chapter
+ $this->AddPage();
+ $this->ChapterTitle($num,$title);
+ $this->ChapterBody($file);
+}
+}
+
+$pdf = new PDF();
+$title = '20000 Leagues Under the Seas';
+$pdf->SetTitle($title);
+$pdf->SetAuthor('Jules Verne');
+$pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
+$pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
+$pdf->Output();
+?>
diff --git a/public/userarea/fpdf/tutorial/tuto5.htm b/public/userarea/fpdf/tutorial/tuto5.htm
new file mode 100644
index 0000000..1fe52ac
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto5.htm
@@ -0,0 +1,134 @@
+
+
+
+
+Tabelle
+
+
+
+
Tabelle
+Questo tutorial mostra modalità differenti per creare tabelle.
+
+Dato che una tabella è solo un'insieme di celle, è naturale costruirne una da esse. Il primo
+esempio è praticato con l'approccio più basilare possibile: semplici celle con bordi, tutte alla stessa dimensione
+e allineate a sinistra. Il risultato è rudimentale ma veloce da ottenere.
+
+
+La seconda tabella porta alcune migliorie: ogni colonna ha una sua larghezza, intestazione e sono centrate,
+numerate e allineate a destra. In più, sono state rimosse le righe orizzontali. Questo si fa attraverso
+il parametro border del metodo Cell() che specifica quali lati della cella debbano essere
+disegnati. Qui vogliamo il lato sinistro (L) e destro (R). Rimane il
+problema della linea orizzontale per finire la tabella. Ci sono due possibilità: sia
+controllare quando si arriva all'ultima riga del ciclo, in questo caso utilizzare LRB per il parametro border
+ or, come è stato fatto qui, aggiungere la riga quando finisce il ciclo.
+
+
+La terza tabella è simile alla seconda ma usa i colori. I colori di riempimento, del testo, e della linea
+sono semplicemente specificati. L'alternaggio della colorazione delle righe è ottenuto alternando trasparenza
+e colorazione delle celle.
+
+
diff --git a/public/userarea/fpdf/tutorial/tuto5.php b/public/userarea/fpdf/tutorial/tuto5.php
new file mode 100644
index 0000000..252b70f
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto5.php
@@ -0,0 +1,102 @@
+Cell(40,7,$col,1);
+ $this->Ln();
+ // Data
+ foreach($data as $row)
+ {
+ foreach($row as $col)
+ $this->Cell(40,6,$col,1);
+ $this->Ln();
+ }
+}
+
+// Better table
+function ImprovedTable($header, $data)
+{
+ // Column widths
+ $w = array(40, 35, 40, 45);
+ // Header
+ for($i=0;$iCell($w[$i],7,$header[$i],1,0,'C');
+ $this->Ln();
+ // Data
+ foreach($data as $row)
+ {
+ $this->Cell($w[0],6,$row[0],'LR');
+ $this->Cell($w[1],6,$row[1],'LR');
+ $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R');
+ $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R');
+ $this->Ln();
+ }
+ // Closing line
+ $this->Cell(array_sum($w),0,'','T');
+}
+
+// Colored table
+function FancyTable($header, $data)
+{
+ // Colors, line width and bold font
+ $this->SetFillColor(255,0,0);
+ $this->SetTextColor(255);
+ $this->SetDrawColor(128,0,0);
+ $this->SetLineWidth(.3);
+ $this->SetFont('','B');
+ // Header
+ $w = array(40, 35, 40, 45);
+ for($i=0;$iCell($w[$i],7,$header[$i],1,0,'C',true);
+ $this->Ln();
+ // Color and font restoration
+ $this->SetFillColor(224,235,255);
+ $this->SetTextColor(0);
+ $this->SetFont('');
+ // Data
+ $fill = false;
+ foreach($data as $row)
+ {
+ $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
+ $this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
+ $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R',$fill);
+ $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R',$fill);
+ $this->Ln();
+ $fill = !$fill;
+ }
+ // Closing line
+ $this->Cell(array_sum($w),0,'','T');
+}
+}
+
+$pdf = new PDF();
+// Column headings
+$header = array('Country', 'Capital', 'Area (sq km)', 'Pop. (thousands)');
+// Data loading
+$data = $pdf->LoadData('countries.txt');
+$pdf->SetFont('Arial','',14);
+$pdf->AddPage();
+$pdf->BasicTable($header,$data);
+$pdf->AddPage();
+$pdf->ImprovedTable($header,$data);
+$pdf->AddPage();
+$pdf->FancyTable($header,$data);
+$pdf->Output();
+?>
diff --git a/public/userarea/fpdf/tutorial/tuto6.htm b/public/userarea/fpdf/tutorial/tuto6.htm
new file mode 100644
index 0000000..2a9c278
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto6.htm
@@ -0,0 +1,154 @@
+
+
+
+
+Link e testo scorrevole
+
+
+
+
Link e testo scorrevole
+Questo tutorial spiega come inserire link (interni ed esterni) e mostrare una nuova modalità di
+scrittura. Contiene anche un parser HTML minimale.
+
+
<?php
+require('fpdf.php');
+
+class PDF extends FPDF
+{
+protected $B = 0;
+protected $I = 0;
+protected $U = 0;
+protected $HREF = '';
+
+function WriteHTML($html)
+{
+ // HTML parser
+ $html = str_replace("\n",' ',$html);
+ $a = preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
+ foreach($a as $i=>$e)
+ {
+ if($i%2==0)
+ {
+ // Text
+ if($this->HREF)
+ $this->PutLink($this->HREF,$e);
+ else
+ $this->Write(5,$e);
+ }
+ else
+ {
+ // Tag
+ if($e[0]=='/')
+ $this->CloseTag(strtoupper(substr($e,1)));
+ else
+ {
+ // Extract attributes
+ $a2 = explode(' ',$e);
+ $tag = strtoupper(array_shift($a2));
+ $attr = array();
+ foreach($a2 as $v)
+ {
+ if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
+ $attr[strtoupper($a3[1])] = $a3[2];
+ }
+ $this->OpenTag($tag,$attr);
+ }
+ }
+ }
+}
+
+function OpenTag($tag, $attr)
+{
+ // Opening tag
+ if($tag=='B' || $tag=='I' || $tag=='U')
+ $this->SetStyle($tag,true);
+ if($tag=='A')
+ $this->HREF = $attr['HREF'];
+ if($tag=='BR')
+ $this->Ln(5);
+}
+
+function CloseTag($tag)
+{
+ // Closing tag
+ if($tag=='B' || $tag=='I' || $tag=='U')
+ $this->SetStyle($tag,false);
+ if($tag=='A')
+ $this->HREF = '';
+}
+
+function SetStyle($tag, $enable)
+{
+ // Modify style and select corresponding font
+ $this->$tag += ($enable ? 1 : -1);
+ $style = '';
+ foreach(array('B', 'I', 'U') as $s)
+ {
+ if($this->$s>0)
+ $style .= $s;
+ }
+ $this->SetFont('',$style);
+}
+
+function PutLink($URL, $txt)
+{
+ // Put a hyperlink
+ $this->SetTextColor(0,0,255);
+ $this->SetStyle('U',true);
+ $this->Write(5,$txt,$URL);
+ $this->SetStyle('U',false);
+ $this->SetTextColor(0);
+}
+}
+
+$html = 'You can now easily print text mixing different styles: <b>bold</b>, <i>italic</i>,
+<u>underlined</u>, or <b><i><u>all at once</u></i></b>!<br><br>You can also insert links on
+text, such as <a href="http://www.fpdf.org">www.fpdf.org</a>, or on an image: click on the logo.';
+
+$pdf = new PDF();
+// First page
+$pdf->AddPage();
+$pdf->SetFont('Arial','',20);
+$pdf->Write(5,"To find out what's new in this tutorial, click ");
+$pdf->SetFont('','U');
+$link = $pdf->AddLink();
+$pdf->Write(5,'here',$link);
+$pdf->SetFont('');
+// Second page
+$pdf->AddPage();
+$pdf->SetLink($link);
+$pdf->Image('logo.png',10,12,30,0,'','http://www.fpdf.org');
+$pdf->SetLeftMargin(45);
+$pdf->SetFontSize(14);
+$pdf->WriteHTML($html);
+$pdf->Output();
+?>
+Il nuovo metodo per mostrare il testo è Write(). È molto simile a MultiCell(); le differenze sono:
+
+
La fine della linea è al margine destro ed il testo inizia al margine a sinistra
+
The current position moves at the end of the text
+
+Quindi per permettere di scrivere del testo, alterare lo stile del carattere, quindi continuare dal punto esatto
+dove eravamo rimasti. Purtroppo però non si può giustificare il testo.
+
+
+Il metodo è utilizzato sulla prima pagina per inserire un link che punti alla seconda pagina. L'inizio
+della frase è scritto in testo normale, quindi si cambia in sottolineato e si conclude. Il link
+è creato con AddLink(), che ritorna un identificatore per il link. L'identificatore è
+passato come terzo parametro di Write(). Una volta che la seconda pagina è creata, usiamo SetLink() per
+creare un link che punti all'inizio della pagina corrente.
+
+
+Quindi inseriamo un'immagine con un link esterno su di essa. Un link esterno è semplicemente un URL. È passato come
+ultimo parametro di Image().
+
+
+Concludendo, il margine sinistro si sposta dopo l'immagine con SetLeftMargin() e del testo è mostrato in
+formato HTML. È utilizzato un parser HTML molto semplice per questo scopo, basato su espressioni regolari.
+I tag riconosciuti sono <b>, <i>, <u>, <a> e <br>; gli altri sono
+ignorati. Il parser fa anche uso del metodo Write(). Un link esterno è inserito allo stesso modo di
+uno interno (terzo parametro di Write()). Notare che anche Cell() permette di inserire link.
+
+
diff --git a/public/userarea/fpdf/tutorial/tuto6.php b/public/userarea/fpdf/tutorial/tuto6.php
new file mode 100644
index 0000000..427e4d3
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto6.php
@@ -0,0 +1,113 @@
+/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
+ foreach($a as $i=>$e)
+ {
+ if($i%2==0)
+ {
+ // Text
+ if($this->HREF)
+ $this->PutLink($this->HREF,$e);
+ else
+ $this->Write(5,$e);
+ }
+ else
+ {
+ // Tag
+ if($e[0]=='/')
+ $this->CloseTag(strtoupper(substr($e,1)));
+ else
+ {
+ // Extract attributes
+ $a2 = explode(' ',$e);
+ $tag = strtoupper(array_shift($a2));
+ $attr = array();
+ foreach($a2 as $v)
+ {
+ if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
+ $attr[strtoupper($a3[1])] = $a3[2];
+ }
+ $this->OpenTag($tag,$attr);
+ }
+ }
+ }
+}
+
+function OpenTag($tag, $attr)
+{
+ // Opening tag
+ if($tag=='B' || $tag=='I' || $tag=='U')
+ $this->SetStyle($tag,true);
+ if($tag=='A')
+ $this->HREF = $attr['HREF'];
+ if($tag=='BR')
+ $this->Ln(5);
+}
+
+function CloseTag($tag)
+{
+ // Closing tag
+ if($tag=='B' || $tag=='I' || $tag=='U')
+ $this->SetStyle($tag,false);
+ if($tag=='A')
+ $this->HREF = '';
+}
+
+function SetStyle($tag, $enable)
+{
+ // Modify style and select corresponding font
+ $this->$tag += ($enable ? 1 : -1);
+ $style = '';
+ foreach(array('B', 'I', 'U') as $s)
+ {
+ if($this->$s>0)
+ $style .= $s;
+ }
+ $this->SetFont('',$style);
+}
+
+function PutLink($URL, $txt)
+{
+ // Put a hyperlink
+ $this->SetTextColor(0,0,255);
+ $this->SetStyle('U',true);
+ $this->Write(5,$txt,$URL);
+ $this->SetStyle('U',false);
+ $this->SetTextColor(0);
+}
+}
+
+$html = 'You can now easily print text mixing different styles: bold, italic,
+underlined, or all at once!
You can also insert links on
+text, such as www.fpdf.org, or on an image: click on the logo.';
+
+$pdf = new PDF();
+// First page
+$pdf->AddPage();
+$pdf->SetFont('Arial','',20);
+$pdf->Write(5,"To find out what's new in this tutorial, click ");
+$pdf->SetFont('','U');
+$link = $pdf->AddLink();
+$pdf->Write(5,'here',$link);
+$pdf->SetFont('');
+// Second page
+$pdf->AddPage();
+$pdf->SetLink($link);
+$pdf->Image('logo.png',10,12,30,0,'','http://www.fpdf.org');
+$pdf->SetLeftMargin(45);
+$pdf->SetFontSize(14);
+$pdf->WriteHTML($html);
+$pdf->Output();
+?>
diff --git a/public/userarea/fpdf/tutorial/tuto7.htm b/public/userarea/fpdf/tutorial/tuto7.htm
new file mode 100644
index 0000000..b59e941
--- /dev/null
+++ b/public/userarea/fpdf/tutorial/tuto7.htm
@@ -0,0 +1,192 @@
+
+
+
+
+Aggiunta di nuovi font e supporto codifica
+
+
+
+
Aggiunta di nuovi font e supporto codifica
+Questo tutorial spiega come usare i font TrueType, OpenType e Type1 in modo da non essere più limitati ai
+font standard predefiniti. L'altro beneficio è che si può scegliere una codifica del testo, permettendo
+di utilizzare altre lingue oltre a quelle occidentali (i font standard supportano solo cp1252, anche noto come windows-1252).
+
+
+Per OpenType, è supportato solo il formato basato su TrueType (non quello basato su Type1).
+Per Type1, c'è bisogno del corrispondente file AFM (di solito è fornito insieme al font).
+
+
+Aggiungere un nuovo font richiede due passi:
+
+
Generazione di un file di definizione
+
Dichiarazione di un font nello script
+
+
+
Generatore di un file di definizione
+Il primo passo consiste nel generare un file PHP contenente tutte le informazioni che necessita FPDF;
+in aggiunta, il file del font è compresso. Per farlo, uno script di aiuto è fornito nella cartella makefont
+del pacchetto: makefont.php. Contiene le seguenti funzioni:
+
+
+MakeFont(string fontfile [, string enc [, boolean embed [, boolean subset]]])
+
+
fontfile
+
+
Percorso del file .ttf, .otf or .pfb.
+
+
enc
+
+
Nome della codifica in uso. Predefinito: cp1252.
+
+
embed
+
+
Se incorporare il font o meno. Predefinito: true.
+
+
subset
+
+
Se inserire il sottoinsieme del font o meno. Predefinito: true.
+
+
+
+Il primo parametro è il nome del file del font. L'estensione può essere sia .ttf, .otf o .pfb e
+determina il tipo di font. Se si utilizza il font Type1 con il formato è ASCII (.pfa), puoi convertirlo in binario
+(.pfb) con l'aiuto di t1utils.
+
+
+Per i font Type1, il file .afm corrispondente deve essere presente nella stessa cartella.
+
+
+La codifica definisce l'associazione fra un codice (da 0 a 255) ed il carattere. I primi 128 sono
+sempre gli stessi corrispondenti all'ASCII; i successivi sono disponibili. Le codifiche sono salvate in file .map.
+Quelle disponibili sono:
+
+
cp1250 (Central Europe)
+
cp1251 (Cyrillic)
+
cp1252 (Western Europe)
+
cp1253 (Greek)
+
cp1254 (Turkish)
+
cp1255 (Hebrew)
+
cp1257 (Baltic)
+
+
cp1258 (Vietnamese)
+
cp874 (Thai)
+
ISO-8859-1 (Western Europe)
+
ISO-8859-2 (Central Europe)
+
+
ISO-8859-4 (Baltic)
+
ISO-8859-5 (Cyrillic)
+
ISO-8859-7 (Greek)
+
ISO-8859-9 (Turkish)
+
ISO-8859-11 (Thai)
+
ISO-8859-15 (Western Europe)
+
ISO-8859-16 (Central Europe)
+
KOI8-R (Russian)
+
+
KOI8-U (Ukrainian)
+
+Ovviamente il font deve contenere i caratteri corrispondenti alla codifica selezionata.
+
+
+
+Il terzo parametro indica se il font debba essere incorporato nel PDF o meno. Quando un font non è
+incorporato, sarà cercato nel sistema. Il vantaggio è che il file PDF è più leggero; se però
+il font non fosse disponibile, sarà utilizzato un font sostitutivo. Occorre verificare che
+il font richiesto sia installato sui sistemi dei destinatari. L'incorporazione è l'opzione raccomandata per garantire
+la portabilità.
+
+
+
+L'ultimo parametro indica se utilizzare un sottoinsieme o meno, il chè significa che solo
+i caratteri della codifica seelezionata saranno mantenuti nel font incorporato. Come risultato,
+la dimensione del PDF può essere ridotta di molto, specialmente se il font originale era pesante.
+
+
+Dopo aver chiamato la funzione (per fare questo crea un nuovo file e includi makefont.php), sarà creato un file .php,
+con lo stesso nome del file del font. Puoi rinominarlo se lo desideri. Per incorporarlo,
+il file del font è compresso e si ottiene un secondo file con estensione .z (tranne se la funzione per la compressione
+non sia disponibile, dato che richiede Zlib). Puoi rinominare anche quest'ultimo, ma in questo caso occorre cambiare
+la variabile $file del file .php di conseguenza.
+
+
+Esempio:
+
+
+che genera i file comic.php e comic.z.
+
+
+Copiare i file generati nella cartella font. Se il font non può essere compresso, copialo
+direttamente al posto della versione .z.
+
+
+In altro modo è utilizzare MakeFont() da linea di comando:
+
+
+
+php makefont\makefont.php C:\Windows\Fonts\comic.ttf cp1252
+
+
+
+Concludendo, per i font TrueType e OpenType fonts, puoi anche generare i file
+online invece che farlo manualmente.
+
+
+
Dichiarazione dei font nello script
+Il secondo file è semplice. C'è solo bisogno di chiamare il metodo AddFont():
+
+
$pdf->AddFont('Comic','','comic.php');
+
+
+Il font sarà ora disponibile (in forma di stili regolare e sottolineato), utilizzabile come gli altri. Se abbiamo
+lavorato con Comic Sans MS Bold (comicbd.ttf), dovremmo avere scritto:
+
+
$pdf->AddFont('Comic','B','comicbd.php');
+
+
+
+
Esempio
+Ora proviamo un esempio completo. Sarà usato il font Ceviche One.
+Il primo passo è la generazione dei file del font:
+
+Lo script scaturirà alcuni avvisi:
+
+
+Font file compressed: CevicheOne-Regular.z
+Font definition file generated: CevicheOne-Regular.php
+
+Alternativamente possiamo usare la linea di comando:
+
+
+php makefont\makefont.php CevicheOne-Regular.ttf cp1252
+
+
+o utilizzando il generatore online.
+
+
+Ora è possibile copiare i due file generati nella cartella font e scrivere lo script:
+
+
<?php
+require('fpdf.php');
+
+$pdf = new FPDF();
+$pdf->AddFont('CevicheOne','','CevicheOne-Regular.php');
+$pdf->AddPage();
+$pdf->SetFont('CevicheOne','',45);
+$pdf->Write(10,'Enjoy new fonts with FPDF!');
+$pdf->Output();
+?>