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 15:48] – [Creare un PDF con caratteri speciali] niccolodoc:appunti:prog:fpdf [2011/09/22 11:29] (current) – [Scegliere il font] niccolo
Line 5: Line 5:
 La libreria **[[http://www.fpdf.org/|FPDF]]** consente di generare documenti PDF dal linguaggio PHP. In generale crea documenti **senza font inclusi**, che pertanto fanno affidamento sui font installati sul sistema dove verranno visualizzati. La libreria **[[http://www.fpdf.org/|FPDF]]** consente di generare documenti PDF dal linguaggio PHP. In generale crea documenti **senza font inclusi**, che pertanto fanno affidamento sui font installati sul sistema dove verranno visualizzati.
  
-I font predefiniti sono:+**font predefiniti** sono:
  
   * Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique   * Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique
Line 13: Line 13:
   * ZapfDingbats   * ZapfDingbats
  
 +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 34: 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> 
 +ttf2afm andalemo.ttf > andalemo.afm 
 +</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.1295794130.txt.gz · Last modified: 2011/01/23 15:48 by niccolo