Versione iReport: 3.7.1
Mi sono avvicinato a questo problema in due modi.
Il mio primo metodo
Sto creando una pagina pdf
in iReport
e ho uno dei campi (dal database) impostato su un font Gujarati-Salarl (Un font per una lingua regionale dell’India).
Questo font è disponibile nell’elenco dei caratteri di iReport
. Quando premo l’anteprima ottengo l’output desiderato, con il campo nello stile di carattere richiesto.
Tutto qui va bene.
Ma il file pdf
generato contiene ancora lo stesso carattere originale in caratteri inglesi.
Il risultato è lo stesso se chiamo il rapporto dall’applicazione o da un file JAVA
.
Dopo un po ‘di studio ho trovato questo, un secondo metodo
JRProperties.setProperty("net.sf.jasperreports.default.pdf.font.name", "C:\\Gujrati-Saral-1.ttf");
Questo imposta il font del pdf
nel font ttf
fornito, ma ora l’intero pdf
arriva nel font Guarati-saral che non è quello che sto cercando ..
C’è un modo per applicare questo font in modo specifico solo a quel particolare campo?
o
quando si passa dal secondo metodo c’è un modo per non applicare il font Guarati-saral a tutti gli altri campi tranne quello richiesto?
Dovresti utilizzare il meccanismo Font Extensions
.
Dopo aver creato il font ed esportato come file jar, è necessario aggiungere il file jar generato al classpath dell’applicazione.
Puoi trovare ulteriori informazioni sull’uso di Font Extensions
qui .
se hai problemi a visualizzare caratteri UTF-8 nel pdf, dalla versione 4.8.0 di IReport, non c’è bisogno di fare nulla! Basta cambiare il carattere delle celle nella tabella da sanserif a Dejavu sans. questo è tutto.
Seleziona il campo e vai alle proprietà archiviate e cambia il
con questi cambiamenti in ho ottenuto dati arabi che mostrano in PDF.
Per coloro che hanno bisogno della lingua russa in Jasper Reports (almeno in versioni di vecchie versioni), la combinazione seguente fa il trucco senza usare l’estensione Font:
Nome carattere: SanSerif PDF Font: Courier PDF Codifica: CP1251 PDF incorporato: Sì (non è sicuro, potrebbe funzionare anche senza)
Alexey Bakhmutov