User Tools

Site Tools


doc:appunti:prog:fpdf

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:prog:fpdf [2011/01/23 16:06] – [Perparare il font per l'uso con fpdf] niccolodoc:appunti:prog:fpdf [2011/09/22 11:29] (current) – [Scegliere il font] niccolo
Line 14: Line 14:
  
 Per questi font la libreria conosce la **larghezza di ciascun carattere** e pertanto è in grado di impaginare correttamente il documento. Tali informazioni sono contenuti in appositi file .php, contenuti nella sottodirectory **''font/''**. Per questi font la libreria conosce la **larghezza di ciascun carattere** e pertanto è in grado di impaginare correttamente il documento. Tali informazioni sono contenuti in appositi file .php, contenuti nella sottodirectory **''font/''**.
 +
 +**La libreria FPDF non supporta la codifica UTF-8**, accetta solo codifiche ad 8 bit (tabella di 256 caratteri max) e come codifica predefinita utilizza **[[wp>Windows-1252|CP1252]]** (che include le lettere accentate e il simbolo dell'euro in posizione 128).
 ===== Scegliere il font ===== ===== Scegliere il font =====
  
Line 35: Line 37:
 premendo //Invio// nella casella //Search//, se il carattere esiste nel font, viene evidenziato in negativo per qualche secondo nella tabella dei glifi. premendo //Invio// nella casella //Search//, se il carattere esiste nel font, viene evidenziato in negativo per qualche secondo nella tabella dei glifi.
  
-===== Perparare il font per l'uso con fpdf =====+Dopo aver individuato il font è possibile installarlo (anche nella propria home directory) seguendo le istruzioni contenute nella [[..:linux:tux:fonts?&#debian_squeeze_e_xorg|pagina relativa ai font TTF]]. 
 + 
 +In alternativa all'installazione manuale è sufficiente **attivare** il font in ''fontmatrix'' (abilitando il segno di spunta); in questo caso viene creato un link simbolico al font nella directory **''$HOME/.Fontmatrix/Activated/''**, tale directory è compresa tra quelle utilizzate da ''fontconfig''. ''fontmatrix'' stesso provvede all'aggiornamento della cache di ''fontconfig''
 +===== Preparare il font per l'uso con fpdf ===== 
 + 
 +Con questa ricetta si prepara un font TTF per essere incluso nel documento ed utilizzato per rendere caratteri speciali quali le lettere accentate e il simbolo dell'Euro. 
 + 
 +Lavoriamo nella directory **''font/''** fornita dalla libreria FPDF, se si preferisce lavorare in un'altra directory si dovrà ridefinire la costante **''FPDF_FONTPATH''** nel sorgente PHP. 
 + 
 +Anzitutto si deve generare un file AFM a partire dal file TTF, con l'utility **''ttf2afm''** fornita dal pacchetto texlive-binaries:
  
 <code> <code>
 ttf2afm andalemo.ttf > andalemo.afm ttf2afm andalemo.ttf > andalemo.afm
 </code> </code>
 +
 +Con **FPDF 1.7** si utilizza quindi l'utility **''makefont.php''** per preparare il font ad essere usato. Dopo aver copiato il file .ttf nella directory **''fpdf17/font/''**, si esegue:
 +
 +<code>
 +php ../makefont/makefont.php arial_cyrillic.ttf ISO-8859-5
 +</code>
 +
 +Questo predispone il font ad essere incluso nel PDF (altrimenti si deve passare un terzo parametro //false//), pertanto ne viene creata una copia compressa con estensione **''.z''**. Viene creato anche un file con estensione **''.php''** (''arial_cyrillic.php'' nel nostro esempio). Il funzionamento dell'operazione è il seguente:
 +
 +  * Nel file .ttf **deve essere presente la codifica Unicode** per ogni carattere.
 +  * La mappa indicata viene usata per associare ciascun codice 0-255 ad un punto Unicode (indicato con la sintassi ''U+0041''). Se un carattere presente nella mappa non è presente nel font, viene emesso un messaggio di warning. Se non viene indicata la mappa, si intende cp1252.
 +  * Nel file .php vengono salvate informazioni sulla metrica del font.
 +
 +DELETEME Con la versione 1.6 di FPDF bisogna scrivere due righe di PHP che richiamano l'utility MakeFont fornita con la libreria FPDF:
 +
 +<code php>
 +<?php
 +require_once('./makefont/makefont.php');
 +MakeFont('./andalemo.ttf', './andalemo.afm', 'cp1252');
 +?>
 +</code>
 +
 +Dovremmo ricordarci - quando si utilizza questo font - di codificare le stringhe secondo quanto dichiarato a ''MakeFont()'', ecco un esempio:
 +
 +<code php>
 +require_once('fpdf16/fpdf.php');
 +//define('FPDF_FONTPATH', '/var/www/fpdf/fonts/');
 +$pdf=new FPDF();
 +$pdf->AddPage();
 +$pdf->AddFont('Andale Mono', '', 'andalemo.php');
 +$pdf->SetFont('Andale Mono', '', 16);
 +$str = iconv('UTF-8', 'CP1252', 'Niccolò Rigacci, per qualche € in più.');
 +$pdf->SetX(10);$pdf->SetY(50);
 +$pdf->Cell(40, 20, $str);
 +$pdf->Output();
 +</code>
 +
 +===== Unicode =====
 +
 +Alcuni link utili per Unicode:
 +
 +  * [[http://unicode-search.net/]] Ricerca caratteri nella codifica Unicode
 +  * [[http://www.utf8-chartable.de/]] Tabelle Unicode
doc/appunti/prog/fpdf.1295795214.txt.gz · Last modified: 2011/01/23 16:06 by niccolo