Джаспер останавливает поиск одного шрифта

После обновления Jasper до последней версии он прекратил поиск одного шрифта: Symbol. Остальные шрифты кажутся прекрасными. У меня есть куча ttfs в том же каталоге, что и при запуске jasper, программа - всего лишь небольшая оболочка для создания 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 (на всякий случай файл был поврежден).

Любые идеи, что может происходить?

Ответ 1

Попробуйте добавить строку

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

в файл jasperreports.properties.

Ответ 2

На ubuntu мне нужно было удалить шрифты и переустановить их:

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

Затем он работает нормально.

Ответ 3

Ну, шрифт должен быть установлен в ОС, где выполняется отчет.

Ответ 4

Простые шаги для решения этой проблемы:

  • Откройте jasperreports-x.x.x.jar, в моем случае jasperreports-3.7.2.jar.
  • Найдите файл default.jasperreports.properties и откройте его.
  • Найдите строку net.sf.jasperreports.awt.ignore.missing.font = false и измените значение с false на true net.sf.jasperreports.awt.ignore.missing. шрифт = True.
  • Обновите банку.
  • Добавить в classpath вашего проекта.

Проблема решена.

Ответ 5

Обновление на 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

Ответ 6

Я использую JasperReports 6.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>

Вы также можете загрузить библиотеки и добавить их вручную в проект, однако он будет работать.


Надеюсь, вы сочтете их полезными.