Jasper Reports的JVM不支持字体
我试图用DynamicJasper生成报告,但我得到以下错误:
net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'Arial' is not available to the JVM.
msttcorefonts被安装,但我猜JVM没有使用任何字体。 我使用Ubuntu 10.04。 我怎样才能解决这个问题?
我尝试安装mscorefonts,但该软件包已安装并且是最新的。
sudo apt-get update sudo apt-get install ttf-mscorefonts-installer
我试图在文件系统中search字体,其中:
ls /usr/share/fonts/truetype/msttcorefonts/
这个文件夹只有README文件,正确的说明如何安装。
cat /usr/share/fonts/truetype/msttcorefonts/README
你需要一个互联网连接:
sudo apt-get install --reinstall ttf-mscorefonts-installer
我重新安装了ttf-mscorefonts-installer
(如上所示,确保接受EULA!),问题就解决了。
我使用IReport来安装字体:
工具 – >选项 – >字体 – >点击安装字体
然后select字体并点击
– >导出为扩展名并input名称myfont.jar
添加这个jar和spring.jar *到你的构buildpath。
*从Jaspersoft \ iReport-3.7.0 \ ireport \ modules \ ext复制spring.jar
JasperReports在报表模板中使用的字体不可用于JVM的情况下,如系统字体或来自JR字体扩展的字体,会引发JRFontNotFoundException 。 这样可以避免字体指标不匹配导致的所有问题都被避免,并且我们会对不一致性进行预警。
贾斯珀报告试图帮助你在你的报告开发,说它不能正确导出你的报告,因为它找不到在TextField
或StaticText
定义的字体
<font fontName="Arial"/>
是的,您可以通过将net.sf.jasperreports.awt.ignore.missing.font设置为false来禁用此function,但会导致不一致 。
是的,您可以将字体安装为JVM系统字体(但是您需要在每台可能生成报告的PC上执行此操作,但仍然可能存在编码问题 )。
正确的方法!
使用字体扩展 ! ,如果你想创build自己的(见下面的链接),jasper报告还分发了一个默认的字体扩展jar( jasperreports-fonts-xxxjar
),支持fontName DejaVu Sans
, DejaVu Serif
和DejaVu Sans Mono
<font fontName="DejaVu Sans"/>
从JasperReport终极指南:
我们强烈build议人们只使用字体扩展的字体,因为这是确保在运行时执行报告时字体可供应用程序使用的唯一方法。 使用系统字体时,如果部署在可能没有安装这些字体的新计算机上,报告将无法正常工作
关于如何在PDF中正确呈现字体的StackOverflow链接
关于如何在pdf中正确渲染字体的清单
用JasperSoft Studio生成字体扩展
使用iReport生成字体扩展名
对于CentOS:
wget msttcorefonts
然后:
tar -zxvf msttcorefonts.tar.gz cp msttcorefonts/*.ttf /usr/share/fonts/TTF/ fc-cache -fv
毕竟,重新启动JVM。
有三种方法可以避免这样的问题。
方法1:通过设置忽略缺less的字体属性。
JRProperties.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");
或者可以通过在.jrxml文件中input以下行来设置此属性。
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
方法2:通过设置默认的字体属性。
JRProperties.setProperty("net.sf.jasperreports.default.font.name", "Sans Serif");
或者可以通过在.jrxml文件中input以下行来设置此属性。
<property name="net.sf.jasperreports.default.font.name" value="Sans Serif"/>
方法3:通过添加缺less的字体属性。
首先通过select“工具>>选项>>字体>>安装字体”在IReport中安装缺less的字体,然后select所有字体并导出。点击“导出为扩展名”.jar扩展名。
你可以使用Jasperreports-font.XXXjar这个jar文件,它将出现在你的项目库或类path中。
非常感谢以前的答复。 sudo apt-get install msttcorefonts
工作原理(在我们的Ubuntu开发环境),但不是一个很好的解决scheme。
相反,我们将这些字体与我们的应用程序捆绑在一起 。 他们的JAR文件捆绑了以下字体,
- 宋体
- 英语字体格式一种
- 快递新
- 漫画三星MS
- 格鲁吉亚
- 宋体
- 等宽
直接链接下载jar: Maven ver 1.0。 DynamicFonts
我通过select“SansSerif”或“Serif”而不是“Arial”或“Times New Roman”来解决这个问题。
尝试添加行
net.sf.jasperreports.awt.ignore.missing.font =真
到你的jasperreports.properties文件。
贾斯珀停止find一种字体
你可以通过安装字体来做到这一点,这意味着无处不在你想运行该特定的应用程序。 最简单的方法就是将此bl行添加到您的jrxml文件中:
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
希望能帮助到你。
我面临的问题是基于Spring 3的Web应用程序,并在Oracle Linux 6上的Weblogic 10.3上部署。 链接中提到的解决scheme对我来说并不适用。
我必须采取以下步骤 – 1.将Arial * .ttf字体文件复制到JROCKIT_JAVA_HOME / jre / lib / fonts目录2.在fontconfig.properties.src中创build字体条目3.从Weblogic控制台重新启动集群
filename.Arial=Arial.ttf filename.Arial_Bold=Arial_Bold.ttf filename.Arial_Italic=Arial_Italic.ttf filename.Arial_Bold_Italic=Arial_Bold_Italic.ttf
可以通过iReport制作自定义字体并转换成类似jars文件
对于Debian
加
non-free contrib
deb / src在/etc/apt/sources.list即:
deb http://ftp.debian.org/debian/ squeeze main non-free contrib deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib
然后
apt-get update apt-get install msttcorefonts
当然,你需要重新启动jasperserver。 即:
/opt/jasperreports-server-cp-4.5.0/ctlscript.sh restart
更改您的版本/path。
将您的字体复制到以下目录JDK_HOME \ jre \ lib \ fonts中
用多种语言创buildjasper报告(Unicode)
1)在ireport desginer中安装字体
2)创build字体的扩展(我们将在应用程序类path中使用它)
3)在OS上安装字体(可选)
4)将所有的.ttf字体粘贴到jre-> lib-> fonts目录下(否则web应用程序会抛出错误字体不能用于JVM)
其实我用一个非常简单的方法解决了这个问题
- 去你的
home path
,像/root
- 创build一个名为
.fonts
的文件夹 - 将
all your font files
到.fonts
,如果使用Windows,则可以从C:\windows\fonts
复制字体。 -
sudo apt-get install fontconfig
-
fc-cache –fv
字体caching。
嘿无法查看在Windows上生成的文件?
你可以尝试一个很好的解决scheme:
yum install curl cabextract xorg-x11-font-utils fontconfig
之后,我需要重新启动我的系统CentOS6。
来源: http : //mscorefonts2.sourceforge.net/
解决scheme分2步(如果你使用的是centOS)
-
下载Microsoft核心字体rpm包。
[root@WEBSVR~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
-
安装rpm包。
[root@WEBSVR~/]# rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm