web-dev-qa-db-ja.com

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

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で正常に開きました(ファイルが破損した場合に備えて)。

何が起こっているのか考えはありますか?

14
pupeno

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

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

jasperreports.propertiesファイルに。

16
Tjazo

Ubuntuでは、フォントをアンインストールして再インストールする必要がありました。

Sudo apt-get remove  ttf-mscorefonts-installer
Sudo apt-get install  ttf-mscorefonts-installer

その後、それは問題なく動作します。

5
fselvatici

フォントは、レポートが実行されるOSにインストールする必要があります。

2
Condemateguadua

この問題を解決する簡単な手順は次のとおりです。

  1. Jasperreports-x.x.x.jar、私の場合はjasperreports-3.7.2.jarを開きます。
  2. default.jasperreports.propertiesファイルを見つけて開きます。
  3. 次の行を見つけますnet.sf.jasperreports.awt.ignore.missing.font = falseそして値をfalseからtrueに変更しますnet.sf.jasperreports.awt.ignore.missing.font = true
  4. Jarファイルを更新します。
  5. プロジェクトのクラスパスに追加します。

問題は解決しました。

1
Beschi

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>

ライブラリをダウンロードして手動でプロジェクトに追加することもできますが、機能します。


お役に立てば幸いです。

1
cesAR

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
0
Aram Paronikyan