99

我正在尝试使用 DynamicJasper 生成报告,但出现以下错误:

net.sf.jasperreports.engine.util.JRFontNotFoundException:  
                                 Font 'Arial' is not available to the JVM.   

msttcorefonts已安装,但我猜 JVM 没有使用其中的任何字体。

我正在使用 Ubuntu 10.04。

我怎样才能解决这个问题?

4

19 回答 19

70

我尝试安装 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!),问题解决了。

于 2011-10-25T13:54:23.770 回答
37

如果报告模板中使用的字体不能作为系统字体或来自 JR 字体扩展的字体提供给 JVM,JasperReports 会引发JRFontNotFoundException 。这样可以确保避免由字体度量不匹配引起的所有问题,并且我们对不一致有早期警告。

Jasper 报告试图帮助您进行报告开发,指出它无法正确导出您的报告,因为它无法找到定义的字体TextFieldStaticText

<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 SansDejaVu Serif并且DejaVu Sans Mono

<font fontName="DejaVu Sans"/>

来自 JasperReport 终极指南:

我们强烈鼓励人们只使用从字体扩展派生的字体,因为这是确保在运行时执行报告时字体对应用程序可用的唯一方法。当部署在可能没有安装这些字体的新机器上时,使用系统字体总是带来报告无法正常工作的风险

StackOverflow 上有关如何在 pdf 中正确呈现字体的链接

关于如何在 pdf 中正确呈现字体的清单

使用 JasperSoft Studio 生成字体扩展

使用 iReport 生成字体扩展

于 2016-02-22T08:56:27.860 回答
23

我使用 IReport 安装字体:

工具->选项->字体->点击安装字体

然后选择字体并点击

-> 导出为扩展名并输入名称 myfont.jar

将此 jar 和 spring.jar *添加到您的构建路径中。

*从 Jaspersoft\iReport-3.7.0\ireport\modules\ext 复制 spring.jar

于 2011-07-13T18:41:46.840 回答
14

sudo apt-get install msttcorefonts工作(在我们的 Ubuntu 开发环境中),但不是一个很好的解决方案。

相反,我们根据这个提示将字体与我们的应用程序捆绑在一起。他们的 JAR 文件捆绑了以下字体,

  • 宋体
  • 英语字体格式一种
  • 快递新
  • 漫画无 MS
  • 乔治亚州
  • 维达纳
  • 等宽

下载 jar 的直接链接: Maven 版本 1.0。动态字体

于 2012-09-24T03:29:33.107 回答
12

对于 CentOS:

wget msttcorefonts

然后:

tar -zxvf msttcorefonts.tar.gz
cp msttcorefonts/*.ttf  /usr/share/fonts/TTF/
fc-cache -fv 

毕竟,重新启动JVM。

于 2013-08-12T13:54:00.337 回答
11

有三种方法可以避免此类问题。

方法一:通过设置忽略缺失的字体属性。

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,它将出现在您的项目库或类路径中。

于 2015-09-05T10:54:05.103 回答
5

我通过仅选择“SansSerif”或“Serif”而不是“Arial”或“Times New Roman”解决了这个问题。

于 2010-10-20T11:48:42.133 回答
3

尝试添加行

net.sf.jasperreports.awt.ignore.missing.font=true

到您的 jasperreports.properties 文件。

Jasper 停止寻找一种字体

于 2011-07-11T14:35:15.350 回答
3

您可以通过安装字体来做到这一点,这意味着您想在任何地方运行该特定应用程序。最简单的方法就是将此 bl 行添加到您的 jrxml 文件中:

 <property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
于 2012-05-21T14:05:25.973 回答
3

我遇到了基于 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
于 2013-02-19T18:53:53.967 回答
3

如果您在项目中使用 maven,则只需将 jasper-fonts 依赖项添加到 pom.xml:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-fonts</artifactId>
    <version>6.8.1</version>
</dependency>

在系统上安装丢失的字体可能是一个可行的解决方案,但对我来说不是,我不想在每次部署到新服务器后都安装丢失的字体,而是选择在应用程序中嵌入字体。

问候。

于 2019-05-29T17:33:16.733 回答
2

可以通过 iReport 制作您的自定义字体并像 jars 文件一样转换

于 2010-11-05T00:01:17.093 回答
2

对于 Debian

添加

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

更改您的版本/路径。

于 2012-08-03T02:27:52.770 回答
1

以多种语言创建碧玉报告(Unicode)

1) 在 ireport 设计器中安装字体

2)创建字体扩展(我们将在应用程序类路径中使用它)

3)在操作系统上安装字体(可选)

4) 将所有字体的.ttf 粘贴到jre->lib->fonts 目录中(否则web 应用程序会抛出错误font is not available to JVM)

于 2014-07-10T13:37:31.913 回答
0

实际上我以一种非常简单的方式解决了这个问题

  1. 去你的home path,比如/root
  2. 创建一个名为的文件夹.fonts
  3. 复制all your font files到,如果您使用 Windows ,则.fonts可以从中复制字体。C:\windows\fonts
  4. sudo apt-get install fontconfig
  5. fc-cache –fv重建字体缓存。
于 2015-01-19T09:46:46.793 回答
0

分两步解决(如果您使用的是centOS)

  1. 下载 Microsoft 核心字体 rpm 包。

    [root@WEBSVR~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
    
  2. 安装 rpm 包。

    [root@WEBSVR~/]# rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm
    
于 2016-04-12T08:17:47.113 回答
0

您可以使用这个库,它将 Liberation-fonts 打包为 JasperReport 字体扩展,并将它们注册为 Arial、Times New Roman 和 Courier:

https://mvnrepository.com/artifact/com.mpobjects.jasperreports.font/jasperreports-fonts-liberation

于 2021-06-29T10:14:25.587 回答
-1

将您的字体复制到以下目录 JDK_HOME\jre\lib\fonts

于 2012-02-14T06:46:35.667 回答
-1

嘿 无法查看在 Windows 上生成的文档?

您可以轻松尝试一个很好的解决方案:

yum install curl cabextract xorg-x11-font-utils fontconfig

rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm

在此之后我需要重新启动我的系统 CentOS6。

来源: http: //mscorefonts2.sourceforge.net/

于 2017-04-26T17:40:55.633 回答