Sempre alla ricerca di miglioramenti... di questo meraviglioso progetto!
Se non ho capito male, credo che il Font predefinito di FPDF sia codificato in cp1252 (Western Europe), il quale ha solamente 255 caratteri disponibili...
Analizzando la ottima modifica apportata da Golia ho pensato di aggiungere direttamente una Function che restituisce la stringa modificata con tutti i Replace apportati. Ho aggiunti anche altri Replace, infatti io ho la necessità di stampare anche caratteri greci.
Il fatto è che finora mi sono limitato a sostituire "α", "β", "γ", ecc... con "a", "b", "g", ecc.
Private Function convCP1252($txt As String) As String
'righe aggiunte da golia
$txt = Replace($txt, "€", Chr(128))
$txt = Replace($txt, "‚", Chr(130))
$txt = Replace($txt, "ƒ", Chr(131))
$txt = Replace($txt, "„", Chr(132))
$txt = Replace($txt, "…", Chr(133))
$txt = Replace($txt, "†", Chr(134))
$txt = Replace($txt, "‡", Chr(135))
$txt = Replace($txt, "ˆ", Chr(136))
$txt = Replace($txt, "‰", Chr(137))
$txt = Replace($txt, "Š", Chr(138))
$txt = Replace($txt, "‹", Chr(139))
$txt = Replace($txt, "Œ", Chr(140))
$txt = Replace($txt, "Ž", Chr(142))
$txt = Replace($txt, "‘", Chr(145))
$txt = Replace($txt, "’", Chr(146))
$txt = Replace($txt, "“", Chr(147))
$txt = Replace($txt, "”", Chr(148))
$txt = Replace($txt, "•", Chr(149))
$txt = Replace($txt, "–", Chr(150))
$txt = Replace($txt, "—", Chr(151))
$txt = Replace($txt, "˜", Chr(152))
$txt = Replace($txt, "™", Chr(153))
$txt = Replace($txt, "š", Chr(154))
$txt = Replace($txt, "›", Chr(155))
$txt = Replace($txt, "œ", Chr(156))
$txt = Replace($txt, "ž", Chr(158))
$txt = Replace($txt, "Ÿ", Chr(159))
$txt = Replace($txt, "é", Chr(233))
$txt = Replace($txt, "è", Chr(232))
$txt = Replace($txt, "£", Chr(163))
$txt = Replace($txt, "à", Chr(224))
$txt = Replace($txt, "ç", Chr(231))
$txt = Replace($txt, "ì", Chr(236))
$txt = Replace($txt, "ò", Chr(242))
$txt = Replace($txt, "°", Chr(176))
$txt = Replace($txt, "ù", Chr(249))
$txt = Replace($txt, "§", Chr(167))
'fine righe golia
' aggiunti da me...
$txt = Replace($txt, "À", Chr(192))
$txt = Replace($txt, "È", Chr(200))
$txt = Replace($txt, "É", Chr(201))
$txt = Replace($txt, "Ò", Chr(210))
$txt = Replace($txt, "Ù", Chr(217))
$txt = Replace($txt, "Ì", Chr(204))
$txt = Replace($txt, "α", "a") '"alfa")
$txt = Replace($txt, "β", "b") '"beta")
$txt = Replace($txt, "γ", "g") '"gamma")
$txt = Replace($txt, "δ", "d") '"delta")
$txt = Replace($txt, "ε", "e") '"epsilon")
$txt = Replace($txt, "μ", "micron")
$txt = Replace($txt, "ω", "o") '"omega")
Return $txt
End
Poi in ogni procedura che richiama un "txt" faccio fare immediatamente la conversione, così ho modificato cell, cell2, text, multicell, rotatetext... con una sola riga da inserire appena prima viene richiamata la prima "txt" nella procedura...
In questo modo il codice è più snello, e se volete modificare/aggiungere dei caratteri lo fate una volta sola in tutte le procedure.
Cercando un po' su internet poi ho scoperto che c'è una libreria identica a FPDF, la UFPDF, che ha come differenza quella di accettare la codifica UT8... molto più completa.
La mia domanda è... Si potrebbe sostituire la libreria FPDF con UFPDF oppure è un lavorone?
PS. perché non vedo come sia possibili poter stampare i caratteri greci usando la FPDF (se non cambiando l'encode del carattere, ma a quel punto dovrei rivedere tutti i caratteri
normali se combaciano...). Ho visto che la FDPF accetta anche il cp1253 (ossia la codifica greca...)
Nel caso, come si cambia l'enc di un font in FPDF?
PPS. sempre in tema di caratteri, come faccio ad aggiungerne uno nuovo font oltre a quelli che già ci sono predefiniti?
Ho visto che c'è un comando addFont... ma non ho capito bene come usarlo da gambas (mi pare che sia predisposto per essere usato in PHP).