我正在尝试使用 DynamicJasper 生成报告,但出现以下错误:
net.sf.jasperreports.engine.util.JRFontNotFoundException:
Font 'Arial' is not available to the JVM.
msttcorefonts已安装,但我猜 JVM 没有使用其中的任何字体。
我正在使用 Ubuntu 10.04。
我怎样才能解决这个问题?
我正在尝试使用 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
我尝试在文件系统中搜索字体,使用:
ls /usr/share/fonts/truetype/msttcorefonts/
这个文件夹只有自述文件,其中包含有关如何安装的正确说明。
cat /usr/share/fonts/truetype/msttcorefonts/README
为此,您需要互联网连接:
sudo apt-get install --reinstall ttf-mscorefonts-installer
我重新安装ttf-mscorefonts-installer(如上图,确保接受 EULA!),问题解决了。
如果报告模板中使用的字体不能作为系统字体或来自 JR 字体扩展的字体提供给 JVM,JasperReports 会引发JRFontNotFoundException 。这样可以确保避免由字体度量不匹配引起的所有问题,并且我们对不一致有早期警告。
Jasper 报告试图帮助您进行报告开发,指出它无法正确导出您的报告,因为它无法找到定义的字体TextField或StaticText
<font fontName="Arial"/>
是的,您可以通过将net.sf.jasperreports.awt.ignore.missing.font设置为 true来禁用此功能,但您将遇到export inconsistencies。
是的,您可以将字体安装为 JVM 系统字体(但您需要在每台使用的可能生成报告的 PC 上执行此操作,并且您仍然可能遇到编码问题)。
使用字体扩展!,如果您想创建自己的(请参阅下面的链接),jasper 报告还分发了一个默认的字体扩展 jar ( jasperreports-fonts-x.x.x.jar),它支持 fontName DejaVu Sans,DejaVu Serif并且DejaVu Sans Mono
<font fontName="DejaVu Sans"/>
来自 JasperReport 终极指南:
我们强烈鼓励人们只使用从字体扩展派生的字体,因为这是确保在运行时执行报告时字体对应用程序可用的唯一方法。当部署在可能没有安装这些字体的新机器上时,使用系统字体总是带来报告无法正常工作的风险
StackOverflow 上有关如何在 pdf 中正确呈现字体的链接
我使用 IReport 安装字体:
工具->选项->字体->点击安装字体
然后选择字体并点击
-> 导出为扩展名并输入名称 myfont.jar
将此 jar 和 spring.jar *添加到您的构建路径中。
*从 Jaspersoft\iReport-3.7.0\ireport\modules\ext 复制 spring.jar
sudo apt-get install msttcorefonts工作(在我们的 Ubuntu 开发环境中),但不是一个很好的解决方案。
相反,我们根据这个提示将字体与我们的应用程序捆绑在一起。他们的 JAR 文件捆绑了以下字体,
下载 jar 的直接链接: Maven 版本 1.0。动态字体
对于 CentOS:
wget msttcorefonts
然后:
tar -zxvf msttcorefonts.tar.gz
cp msttcorefonts/*.ttf /usr/share/fonts/TTF/
fc-cache -fv
毕竟,重新启动JVM。
有三种方法可以避免此类问题。
方法一:通过设置忽略缺失的字体属性。
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:通过添加缺少的字体属性。
首先通过选择“工具>>选项>>字体>>安装字体”在IReport中安装缺少的字体,然后选择所有字体并通过单击带有.jar扩展名的“导出为扩展名”来导出。
您可以将此 jar 用于 Jasperreports-font.XXXjar,它将出现在您的项目库或类路径中。
我通过仅选择“SansSerif”或“Serif”而不是“Arial”或“Times New Roman”解决了这个问题。
尝试添加行
net.sf.jasperreports.awt.ignore.missing.font=true
到您的 jasperreports.properties 文件。
您可以通过安装字体来做到这一点,这意味着您想在任何地方运行该特定应用程序。最简单的方法就是将此 bl 行添加到您的 jrxml 文件中:
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
我遇到了基于 Spring 3 并部署在 Oracle Linux 6 上的 Weblogic 10.3 上的 Web 应用程序的问题。链接中提到的解决方案对我不起作用。
我必须采取以下步骤 - 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
如果您在项目中使用 maven,则只需将 jasper-fonts 依赖项添加到 pom.xml:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.8.1</version>
</dependency>
在系统上安装丢失的字体可能是一个可行的解决方案,但对我来说不是,我不想在每次部署到新服务器后都安装丢失的字体,而是选择在应用程序中嵌入字体。
问候。
可以通过 iReport 制作您的自定义字体并像 jars 文件一样转换
添加
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。IE:
/opt/jasperreports-server-cp-4.5.0/ctlscript.sh restart
更改您的版本/路径。
以多种语言创建碧玉报告(Unicode)
1) 在 ireport 设计器中安装字体
2)创建字体扩展(我们将在应用程序类路径中使用它)
3)在操作系统上安装字体(可选)
4) 将所有字体的.ttf 粘贴到jre->lib->fonts 目录中(否则web 应用程序会抛出错误font is not available to JVM)
实际上我以一种非常简单的方式解决了这个问题
home path,比如/root.fontsall your font files到,如果您使用 Windows ,则.fonts可以从中复制字体。C:\windows\fontssudo apt-get install fontconfigfc-cache –fv重建字体缓存。分两步解决(如果您使用的是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
您可以使用这个库,它将 Liberation-fonts 打包为 JasperReport 字体扩展,并将它们注册为 Arial、Times New Roman 和 Courier:
https://mvnrepository.com/artifact/com.mpobjects.jasperreports.font/jasperreports-fonts-liberation
将您的字体复制到以下目录 JDK_HOME\jre\lib\fonts
嘿 无法查看在 Windows 上生成的文档?
您可以轻松尝试一个很好的解决方案:
yum install curl cabextract xorg-x11-font-utils fontconfig
在此之后我需要重新启动我的系统 CentOS6。
来源: http: //mscorefonts2.sourceforge.net/