7

我正在开发一个使用 Jasperreports 的 Java 项目。我曾多次在其他项目中使用相同的技术,在尝试在 Unix 环境中打印报告时遇到了同样的问题。

我的项目使用:

  • JBoss 4.2.3.GA
  • Java 1.6
  • 碧玉报告 4.7.0

抛出的异常是:

net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'Arial' is not available to the JVM. See the Javadoc for more details.

我找到了解决此问题的通用解决方案,并且确实有效:

sudo apt-get install msttcorefonts

但是,我想了解 Jasper 如何使用字体,以及它如何搜索安装在 Unix 环境中的字体。也许更好的问题是:JVM 如何处理原生字体?谁能给我关于这个问题的详细解释?如何在运行时为 JVM 提供系统字体?

4

6 回答 6

4

Java 要求操作系统提供字体。它的工作方式取决于操作系统。

http://en.wikipedia.org/wiki/Arial声明它安装在 MS-Windows 和 MAC OSX 上

于 2012-09-14T13:53:20.690 回答
2

如果你不想经历下载 jars 的麻烦等等,只需转到软件中心并单击安装Ubuntu 受限附加功能。该软件包不仅会安装 MS 字体,还会安装其他对版权受限的应用程序的支持。

这适用于 Ubuntu 系统。

于 2015-05-20T03:31:08.490 回答
0

我在 Jasper 5.0 上也面临同样的问题。我已按照以下步骤操作:

  1. 放置jasper-fonts.jar;
  2. 在linux中安装缺少的字体;
  3. 重新启动 JBoss 服务器。
于 2013-01-03T04:28:53.460 回答
0

2015年更新:

将此添加到(或取消注释)/etc/apt/sources.list

deb http://us.archive.ubuntu.com/ubuntu/ trusty multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty multiverse
deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse

然后运行这个:

sudo apt-get update
sudo apt-get install msttcorefonts
于 2015-04-26T15:16:52.153 回答
0

对于 OpenSuse

验证字体在 SO fc-list 上不可用 grep "宋体"

安装以下 rpm sudo rpm -ivh msttcore-fonts-2.0-3.noarch.rpm

或从页面下载:

http://www.mjmwired.net/resources/mjm-fedora-f11.html#ttf

安装 rpm

再次验证 fc-list | grep "宋体"

重启你的应用服务器

于 2017-03-24T20:23:30.943 回答
0

这拯救了我的一天!

http://jasperstarter.cenote.de/usage.html#Reports_with_custom_fonts

带有自定义字体的报告

Jaspersoft Studio 可以选择创建字体的 jar 文件。把这个jar文件放到JasperStarter的jdbc文件夹中即可。

于 2019-11-19T17:32:25.433 回答