Jasperを最後のバージョンにアップグレードした後、Symbolという1つのフォントの検索を停止しました。残りのフォントは問題ないようです。 jasperが実行されているのと同じディレクトリにたくさんのttfsがあり、プログラムはPDFを生成するための小さなラッパーであり、次のエラーがスローされます。
net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'Symbol' is not available to the JVM. See the Javadoc for more details.
at net.sf.jasperreports.engine.util.JRFontUtil.checkAwtFont(JRFontUtil.Java:358)
at net.sf.jasperreports.engine.util.JRStyledText.getAwtAttributedString(JRStyledText.Java:226)
at net.sf.jasperreports.engine.fill.TextMeasurer.measure(TextMeasurer.Java:362)
at net.sf.jasperreports.engine.fill.JRFillTextElement.chopTextElement(JRFillTextElement.Java:1129)
at net.sf.jasperreports.engine.fill.JRFillStaticText.prepare(JRFillStaticText.Java:183)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.Java:329)
at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.Java:419)
at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.Java:378)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.Java:2028)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.Java:757)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.Java:269)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.Java:127)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.Java:942)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.Java:860)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.Java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.Java:624)
at XmlJasperInterface.report(XmlJasperInterface.Java:82)
at XmlJasperInterface.main(XmlJasperInterface.Java:60)</pre>
プログラムが実行されているディレクトリ:
# ls *.ttf
arial.ttf arialbd.ttf lsans.ttf lsansd.ttf lsansi.ttf symbol.ttf
他のすべてのフォントが見つかります。ああ、私のラップトップ(macosx)では、正常に動作し、サーバー(Debian)でのみ壊れます。 symbol.ttfを開くと、Mac OS Xで正常に開きました(ファイルが破損した場合に備えて)。
何が起こっているのか考えはありますか?
行を追加してみてください
net.sf.jasperreports.awt.ignore.missing.font=true
jasperreports.propertiesファイルに。
Ubuntuでは、フォントをアンインストールして再インストールする必要がありました。
Sudo apt-get remove ttf-mscorefonts-installer
Sudo apt-get install ttf-mscorefonts-installer
その後、それは問題なく動作します。
フォントは、レポートが実行されるOSにインストールする必要があります。
この問題を解決する簡単な手順は次のとおりです。
問題は解決しました。
JasperReports6.3.1を使用しています。 .jrxml
に次の行を追加することで、問題を解決しました。
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
このように、システムにプリインストールされているフォントに応じて、レポートの外観は異なります。私の場合、それは問題を表すものではなく、できるだけ軽量にする必要があるため、プロジェクトにフォントを追加することには興味がありません。
すべてのランタイム環境でレポートの元のフォントを使用する場合、簡単な解決策は、プロジェクトに必要な依存関係を追加することです。
Mavenの例:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.0.0</version>
</dependency>
ライブラリをダウンロードして手動でプロジェクトに追加することもできますが、機能します。
お役に立てば幸いです。
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