我正在尝试使用DynamicJasper生成报告,但是我收到以下错误:
net.sf.jasperreports.engine.util.JRFontNotFoundException:
Font 'Arial' is not available to the JVM.
安装了msttcorefonts,但我猜JVM没有使用它的任何字体。
我正在使用Ubuntu 10.04。
我该如何解决这个问题?
答案 0 :(得分:59)
我尝试安装mscorefonts,但是软件包已经安装并且是最新的。
sudo apt-get update
sudo apt-get install ttf-mscorefonts-installer
我尝试在文件系统中搜索字体:
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!)问题已解决。
答案 1 :(得分:25)
JasperReports引发 JRFontNotFoundException ,如果JVM无法使用报表模板中使用的字体作为系统字体或来自JR字体扩展名的字体。这可以确保避免因字体指标不匹配而导致的所有问题,并且我们会对不一致性发出预警。
Jasper报告正在尝试帮助您进行报告开发,声明无法正确导出报告,因为它找不到TextField
或{{1}中定义的字体}
StaticText
是的,您可以通过将net.sf.jasperreports.awt.ignore.missing.font设置为false来停用,但您将导出不一致。
是的,您可以安装字体作为JVM系统字体(但您需要在每台可能生成报告的PC上执行此操作,您仍然可以编码问题)
使用Font Extensions!,如果您想创建自己的(请参阅下面的链接),jasper报告还会分发一个默认的字体扩展名jar(<font fontName="Arial"/>
),支持fontName jasperreports-fonts-x.x.x.jar
,DejaVu Sans
和DejaVu Serif
DejaVu Sans Mono
来自JasperReport终极指南:
我们强烈建议人们只使用从字体派生的字体 扩展,因为这是确保字体的唯一方法 将在执行报告时提供给应用程序 运行。使用系统字体总是会带来报告的风险 在可能没有的新计算机上部署时正常工作 安装了那些字体
StackOverflow上有关如何在pdf中正确呈现字体的链接
Checklist on how to render font correctly in pdf
答案 2 :(得分:21)
我使用IReport安装字体:
工具 - &gt;选项 - &gt;字体 - &gt;点击安装字体
然后选择字体并单击
- &GT;导出为扩展名和类型名称myfont.jar
将此jar以及spring.jar * 添加到您的构建路径。
*从Jaspersoft \ iReport-3.7.0 \ ireport \ modules \ ext
复制spring.jar答案 3 :(得分:12)
对于CentOS:
wget msttcorefonts
然后:
tar -zxvf msttcorefonts.tar.gz
cp msttcorefonts/*.ttf /usr/share/fonts/TTF/
fc-cache -fv
毕竟,重新启动JVM。
答案 4 :(得分:11)
sudo apt-get install msttcorefonts
有效(在我们的Ubuntu开发环境中),但不是一个很好的解决方案。
相反,我们基于this tip将字体与我们的应用程序捆绑在一起。他们的JAR文件捆绑了以下字体,
直接链接下载jar: Maven ver 1.0. DynamicFonts
答案 5 :(得分:7)
有三种方法可以避免这样的问题。
方法1:通过设置忽略缺少的字体属性。
JRProperties.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");
或者您可以通过在.jrxml文件中输入以下行来设置此属性。
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
方法2:通过设置默认字体属性。
JRProperties.setProperty("net.sf.jasperreports.default.font.name", "Sans Serif");
或者您可以通过在.jrxml文件中输入以下行来设置此属性。
<property name="net.sf.jasperreports.default.font.name" value="Sans Serif"/>
方法3:添加缺少的字体属性。
首先通过选择&#34;在IReport中安装缺少的字体。工具&gt;&gt;选项&gt;&gt;字体&gt;&gt;安装字体&#34;然后选择所有字体并通过单击&#34;导出为扩展名&#34;与.jar扩展。
您可以将此jar用于Jasperreports-font.X.X.X.jar,它将出现在您的项目库或类路径中。
答案 6 :(得分:4)
我通过选择'SansSerif'或'Serif'而不是'Arial'或'Times New Roman'来解决这个问题。
答案 7 :(得分:3)
尝试添加行
net.sf.jasperreports.awt.ignore.missing.font =真
到你的jasperreports.properties文件。
答案 8 :(得分:2)
可以通过iReport制作自定义字体并转换为jars文件
答案 9 :(得分:2)
我遇到了基于Spring 3的Web应用程序的问题,并部署在Oracle Linux 6上的Weblogic 10.3上。link中提到的解决方案对我不起作用。
我必须采取以下步骤 - 1.将Arial * .ttf字体文件复制到JROCKIT_JAVA_HOME / jre / lib / fonts目录 2.在fontconfig.properties.src中输入字体 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
答案 10 :(得分:2)
您可以通过安装字体来实现,这意味着您想要运行该特定应用程序。最简单的方法就是将这个bl行添加到你的jrxml文件中:
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
希望它有所帮助。
答案 11 :(得分:1)
添加
non-free contrib
到/etc/apt/sources.list中的deb和deb-src即:
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
更改您的版本/路径。
答案 12 :(得分:1)
以多种语言创建jasper报告(Unicode)
1)在ireport desginer中安装字体
2)创建字体扩展(我们将在应用程序类路径中使用它)
3)在os上安装字体(可选)
4)在jre-&gt; lib-&gt; fonts目录中粘贴所有.ttf字体(否则Web应用程序将抛出错误字体不可用于JVM)
答案 13 :(得分:0)
实际上我以一种非常简单的方式解决了这个问题
home path
,例如/root
.fonts
all your font files
复制到.fonts
,如果您使用的是Windows,则可以从C:\windows\fonts
复制字体。sudo apt-get install fontconfig
fc-cache –fv
重建字体缓存。答案 14 :(得分:0)
将您的字体复制到以下目录中 JDK_HOME \ JRE \ lib中\字体
答案 15 :(得分:0)
分两步解决(如果您使用的是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
答案 16 :(得分:0)
在查看Windows上生成的文档时遇到问题?
您可以轻松尝试一个好的解决方案:
yum install curl cabextract xorg-x11-font-utils fontconfig
在此之后我需要重新启动我的系统CentOS6。
答案 17 :(得分:0)
如果您在项目中使用Maven,则只需将jasper-fonts依赖项添加到pom.xml:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.8.1</version>
</dependency>
在系统上安装缺少的字体可能是一个可行的解决方案,但对我而言不是,我不想在每次部署后都在新服务器上安装缺少的字体,而是选择将字体嵌入到应用程序中
致谢。
答案 18 :(得分:0)
您可以使用这个库将 Liberation-fonts 打包为 JasperReport 字体扩展,并将它们注册为 Arial、Times New Roman 和 Courier:
https://mvnrepository.com/artifact/com.mpobjects.jasperreports.font/jasperreports-fonts-liberation