Джаспер перестает находить один шрифт - PullRequest
14 голосов
/ 21 октября 2010

После обновления Jasper до последней версии он перестал находить один шрифт: Symbol.Остальные шрифты вроде бы в порядке.У меня есть куча ttfs в той же директории, где находится jasper, программа - просто небольшая оболочка для генерации PDF, и она выдает эту ошибку:

<code>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)

Каталоггде работает программа:

# ls *.ttf
arial.ttf  arialbd.ttf  lsans.ttf  lsansd.ttf  lsansi.ttf  symbol.ttf

Все остальные шрифты найдены.О, в моем ноутбуке (macosx) он работает нормально, он ломается только на сервере (Debian).Я открыл symbol.ttf, и он прекрасно открылся в Mac OS X (на случай, если файл был поврежден).

Есть идеи, что происходит?

Ответы [ 6 ]

16 голосов
/ 27 октября 2010

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

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

в файл jasperreports.properties .

5 голосов
/ 28 марта 2012

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

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

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

2 голосов
/ 14 декабря 2011

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

1 голос
/ 15 ноября 2016

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

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


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

1 голос
/ 15 декабря 2011

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

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

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

0 голосов
/ 26 апреля 2015

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