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/
このフォルダには、インストール方法に関する正しい手順が記載されたREADMEが含まれています。
cat /usr/share/fonts/truetype/msttcorefonts/README
これにはインターネット接続が必要です:
Sudo apt-get install --reinstall ttf-mscorefonts-installer
ttf-mscorefonts-installer
を再インストールし(上記のように、必ずEULAに同意してください!)、問題は解決しました。
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 Sans
、DejaVu Serif
、およびDejaVu Sans Mono
をサポートする
<font fontName="DejaVu Sans"/>
JasperReport Ultimateガイドから:
フォント拡張機能から派生したフォントのみを使用することを強くお勧めします。これは、実行時にレポートが実行されるときにアプリケーションでフォントを使用できるようにする唯一の方法だからです。システムフォントを使用すると、それらのフォントがインストールされていない可能性のある新しいマシンに展開されたときに、レポートが適切に機能しないリスクが常に生じます。
PDFでフォントを正しくレンダリングする方法に関するStackOverflowのリンク
IReportを使用してフォントをインストールします。
ツール->オプション->フォント->フォントのインストールをクリック
次に、フォントを選択してクリックします
->拡張機能としてエクスポートし、myfont.jarという名前を入力します
このjarとspring.jarも追加します* ビルドパスに。
* Jaspersoft\iReport-3.7.0\ireport\modules\extからspring.jarをコピーします
CentOSの場合:
wget msttcorefonts
次に:
tar -zxvf msttcorefonts.tar.gz
cp msttcorefonts/*.ttf /usr/share/fonts/TTF/
fc-cache -fv
結局、JVMを再起動します。
Sudo apt-get install msttcorefonts
は機能します(Ubuntu開発環境で)が、あまり良い解決策ではありません。
代わりに、アプリケーションにフォントをバンドルに基づいて このヒント を使用します。 JARファイルには次のフォントがバンドルされています。
Jarをダウンロードするための直接リンク: Maven ver 1.0。DynamicFonts
このような問題を回避する方法は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を使用できます。
これを解決するには、「Aans」または「Times New Roman」ではなく、「SansSerif」または「Serif」のみを選択しました。
フォントをインストールすることで実行できます。つまり、特定のアプリケーションを実行したいすべての場所でフォントをインストールできます。最も簡単な方法は、このbl行をjrxmlファイルに追加するだけです。
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
それが役に立てば幸い。
iReport経由でカスタムフォントを作成し、jarファイルのように変換できます
行を追加してみてください
net.sf.jasperreports.awt.ignore.missing.font = true
jasperreports.propertiesファイルに。
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
プロジェクトでmavenを使用している場合、jasper-fonts依存関係をpom.xmlに追加するだけです。
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.8.1</version>
</dependency>
不足しているフォントをシステムにインストールすることは有効なソリューションかもしれませんが、私にとってはそうではありません。新しいサーバーに展開するたびに不足しているフォントをインストールする必要はなく、代わりにアプリケーションにフォントを埋め込むことを選びました。
よろしく。
複数言語でのジャスパーレポートの作成(Unicode)
1)ireport desginerにフォントをインストールする
2)フォントの拡張子を作成します(アプリケーションのクラスパスで使用します)
3)OSにフォントをインストールする(オプション)
4)すべての.ttfフォントをjre-> lib-> fontsディレクトリに貼り付けます(そうしないと、WebアプリケーションはJVMで使用できないエラーフォントをスローします)
追加
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
バージョン/パスを変更します。
2ステップのソリューション(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
実際、私はこの問題を非常に簡単な方法で修正しました
home path
に移動します(/root
など).fonts
という名前のフォルダーを作成しますall your font files
を.fonts
にコピーすると、Windowsを使用している場合はC:\windows\fonts
からフォントをコピーできます。Sudo apt-get install fontconfig
fc-cache –fv
はフォントキャッシュを再構築します。次のディレクトリJDK_HOME\jre\lib\fontsにフォントをコピーします
Windowsで作成されたドキュメントの表示に問題がありますか?
あなたは簡単に良い解決策を試すことができます:
yum install curl cabextract xorg-x11-font-utils fontconfig
この後、システムCentOS6を再起動する必要があります。