Salve, mi è capitato di avere la necessita' di aggiungere un nuovo font a FPDF (http://www.aspxnet.it/) ed ho provato a fare il porting dalla versione originale in PHP (http://www.fpdf.org) ma ho dovuto rinunciare perchè non sono riuscito a convertire pienamente delle funzioni native di php quindi ho utilizzato questo metodo, forse un po' macchinoso ma che funziona
AGGIUNGERE UN FONT A FPDF
La procedura deve essere effettuata in locale, perchè sara' diffice che voi abbiate la possibilita' di eseguire script su un dominio in hosting. Lo script necessita di avere PHP-CGI attivo ed il permesso di eseguire SCRIPT.
Scaricate questo file zip.
ISTALLAZIONE:
1) creare una directory virtuale nominata makefont dove ci siano i permessi di esecuzione per PHP CGI e esecuzione script
2) scompattare il file makefont.zip nella cartella virtuale
3) personalizzate il file creaFont.vbs modificando le variabili in testa al file in questo modo:
codice:
HOST = "http://localhost/makefont/" ' Se utilizzate una directory virtuale diversa da makefont cambiate il percorso in modo che punti alla giusta cartella
' Cartella locale del webserver
LocalDir = "C:\Siti\makefont\" ' Cambiate il percorso che punti alla cartella locale che voi utilizzate
eliminaAFM = true ' x eliminare (true)o no (false)l'AFM generato
4) Copiate il file TTF che intendete incorporare nella stessa directory di lavoro
5) lanciate il file creaFont.vbs ed inserite il nome del file copiato senza estensione TTF (es. copiate il file verdana.ttf ed al prompt inserite semplicemente verdana)
6) copiate i 2 files [NOME_FONT].TTF ed il file generato dallo script [NOME_FONT].js generato nella sottodirectory di FPDF/Fonts
A questo punto potete comodamente utilizzare il nuovo font creato semplicemente aggiungendo il comando dell'oggetto FPDF addfont.
Ho inserito il font verdana.ttf per effettuare le prove, una volta convertito e copiato nella sottocartella fonts potete testarlo in questo modo:
codice:
<%@LANGUAGE="VBSCRIPT"%>
<%
Set pdf=CreateJsObject("FPDF")
pdf.CreatePDF()
pdf.Open()
pdf.AddPage()
pdf.SetPath "fpdf/"
pdf.addFont "verdana"
pdf.SetFont "verdana"
pdf.SetFontSize(16)
pdf.Cell 100,1,"Test nuovo font verdana",0,1,"R"
pdf.Close()
response.contentType = "application/pdf"
Dim fso
Set fso=Server.CreateObject("Scripting.FileSystemObject")
filePDF = Server.MapPath("prova.pdf")
if fso.FileExists(filePDF) then fso.DeleteFile(filePDF)
pdf.OutPut filePDF ,true
set pdf = nothing
Response.Write("File prova.pdf generato")
%>
A livello tecnico, la storia è semplice, semplicemente il metodo sfrutta fpdf originale in php per aggiungere il font, ma prima di questo, tramite file .vbs viene lanciato il programma da linea di comando TTF2P1L.exe che accetta in input un file TTF e ne crea il file font metric (file afm), dopo di che viene semplicemente eseguito in XML GET il richiamo a FPDF.php richiamando la funzione addFont.php che accetta in input il file TTF e il file font metric AFM per generare la mappatura del nuovo file con estensione .js.
Ho inserito per prova nello zip il file verdana.ttf per fare delle prove, alcuni font gratuiti carini li potete trovare qui
Saluti, abbracci, vino rosso, salciccia e panini a tutti
P.s nota, alcuni font TTF hanno una protezione che non permette di essere incorporato quindi potreste avere un messaggio di errore quando cercate di convertirli