web-dev-qa-db-ja.com

Jasper ReportsでJVMがフォントを使用できない

DynamicJasperでレポートを生成しようとしていますが、次のエラーが表示されます。

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

msttcorefonts がインストールされていますが、JVMはそこからフォントを使用していないと思います。

Ubuntu 10.04を使用しています。

どうすれば修正できますか?

80
Andrew

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に同意してください!)、問題は解決しました。

60
Braully Rocha

JasperReportsは、レポートテンプレート内で使用されるフォントがシステムフォントまたはJRフォント拡張機能からのフォントとしてJVMで使用できない場合にJRFontNotFoundExceptionを発生させます。これにより、フォントメトリックの不一致に起因するすべての問題が回避され、不整合に関する早期の警告が得られます。

Jasperレポートは、レポート開発でhelp yoを試みています。TextFieldまたはStaticTextで定義されたフォントが見つからないため、レポートを正しくエクスポートできません。

<font fontName="Arial"/>

はい、 net.sf.jasperreports.awt.ignore.missing.font をtrueに設定することでdisableにできますが、export inconsistenciesになります。

はい。install JVMシステムフォントとしてのフォントを使用できます(ただし、レポートを生成する可能性のあるすべてのPCで使用する必要がありますが、エンコードの問題を使用できます)。

正しい方法!

se Font Extensions、独自に作成したい場合(以下のリンクを参照)、jasperレポートはデフォルトのフォント拡張jar(jasperreports-fonts-x.x.x.jar)も配布します。 fontName DejaVu SansDejaVu Serif、およびDejaVu Sans Monoをサポートする

<font fontName="DejaVu Sans"/>

JasperReport Ultimateガイドから:

フォント拡張機能から派生したフォントのみを使用することを強くお勧めします。これは、実行時にレポートが実行されるときにアプリケーションでフォントを使用できるようにする唯一の方法だからです。システムフォントを使用すると、それらのフォントがインストールされていない可能性のある新しいマシンに展開されたときに、レポートが適切に機能しないリスクが常に生じます。

PDFでフォントを正しくレンダリングする方法に関するStackOverflowのリンク

PDFでフォントを正しくレンダリングする方法のチェックリスト

JasperSoft Studioでフォント拡張を生成する

iReportでフォント拡張を生成する

27
Petter Friberg

IReportを使用してフォントをインストールします。

ツール->オプション->フォント->フォントのインストールをクリック

次に、フォントを選択してクリックします

->拡張機能としてエクスポートし、myfont.jarという名前を入力します

このjarとspring.jarも追加します* ビルドパスに。

* Jaspersoft\iReport-3.7.0\ireport\modules\extからspring.jarをコピーします

22
juan

CentOSの場合:

wget msttcorefonts

次に:

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

結局、JVMを再起動します。

12
Ricardo Carmo

Sudo apt-get install msttcorefontsは機能します(Ubuntu開発環境で)が、あまり良い解決策ではありません。

代わりに、アプリケーションにフォントをバンドルに基づいて このヒント を使用します。 JARファイルには次のフォントがバンドルされています。

  • Arial
  • タイムズニューロマン
  • Courier New
  • コミックサンMS
  • ジョージア
  • ヴェルダナ
  • 等幅

Jarをダウンロードするための直接リンク: Maven ver 1.0。DynamicFonts

12
user799188

このような問題を回避する方法は3つあります。

方法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:不足しているフォントプロパティを追加することにより

まず、[ツール] >> [オプション] >> [フォント] >> [フォントのインストール]を選択して、不足しているフォントをIReportにインストールし、すべてのフォントを選択してエクスポートします。

プロジェクトライブラリまたはクラスパスに存在するJasperreports-font.X.X.X.jarにこのjarを使用できます。

7
Mayur Bhokase

これを解決するには、「Aans」または「Times New Roman」ではなく、「SansSerif」または「Serif」のみを選択しました。

5
lkdg

フォントをインストールすることで実行できます。つまり、特定のアプリケーションを実行したいすべての場所でフォントをインストールできます。最も簡単な方法は、このbl行をjrxmlファイルに追加するだけです。

 <property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>

それが役に立てば幸い。

2
Stephen

iReport経由でカスタムフォントを作成し、jarファイルのように変換できます

2
mavirroco

行を追加してみてください

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

jasperreports.propertiesファイルに。

Jasperは1つのフォントの検索を停止する

2
Enrico Sanna

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
2
Ujjwal

プロジェクトでmavenを使用している場合、jasper-fonts依存関係をpom.xmlに追加するだけです。

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

不足しているフォントをシステムにインストールすることは有効なソリューションかもしれませんが、私にとってはそうではありません。新しいサーバーに展開するたびに不足しているフォントをインストールする必要はなく、代わりにアプリケーションにフォントを埋め込むことを選びました。

よろしく。

1
Yassir

複数言語でのジャスパーレポートの作成(Unicode)

1)ireport desginerにフォントをインストールする

2)フォントの拡張子を作成します(アプリケーションのクラスパスで使用します)

3)OSにフォントをインストールする(オプション)

4)すべての.ttfフォントをjre-> lib-> fontsディレクトリに貼り付けます(そうしないと、WebアプリケーションはJVMで使用できないエラーフォントをスローします)

1
rushabh

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を再起動する必要があります。すなわち:

/opt/jasperreports-server-cp-4.5.0/ctlscript.sh restart

バージョン/パスを変更します。

1
d-_-b

2ステップのソリューション(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
    
0
Prasanna Venkat

実際、私はこの問題を非常に簡単な方法で修正しました

  1. home pathに移動します(/rootなど)
  2. .fontsという名前のフォルダーを作成します
  3. all your font files.fontsにコピーすると、Windowsを使用している場合はC:\windows\fontsからフォントをコピーできます。
  4. Sudo apt-get install fontconfig
  5. fc-cache –fvはフォントキャッシュを再構築します。
0
Neeson.Z

次のディレクトリJDK_HOME\jre\lib\fontsにフォントをコピーします

0
Ahmad Zyoud

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/

0
Fernando Pie