Шрифт не доступен для JVM с Jasper Reports - PullRequest
78 голосов
/ 28 сентября 2010

Я пытаюсь создать отчет с помощью DynamicJasper, но получаю следующую ошибку:

net.sf.jasperreports.engine.util.JRFontNotFoundException:  
                                 Font 'Arial' is not available to the JVM.   

msttcorefonts установлен, но я полагаю, что JVM не использует из него никаких шрифтов.

Я использую Ubuntu 10.04.

Как я могу это исправить?

Ответы [ 18 ]

59 голосов
/ 25 октября 2011

Я попытался установить 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 (как показано выше, обязательно примите лицензионное соглашение!) И проблема быларешено.

25 голосов
/ 22 февраля 2016

JasperReports вызывает JRFontNotFoundException в случае, когда шрифт, используемый внутри шаблона отчета, не доступен для JVM в качестве системного шрифта или шрифта, полученного из расширения шрифта JR. Это гарантирует, что все проблемы, вызванные несоответствиями метрики шрифта, будут у нас заблаговременно предупреждены о несоответствии.

Jasper reports пытается помочь вам в разработке вашего отчета, заявив, что он не может правильно экспортировать ваш отчет, так как не может найти шрифт, определенный в TextField или StaticText

<font fontName="Arial"/>

Да, вы можете отключить , установив net.sf.jasperreports.awt.ignore.missing.font в false, но у вас будет несоответствия экспорта .

Да, вы можете установить шрифт как системный шрифт JVM (но вы должны делать это на каждом компьютере, который может генерировать отчет, и у вас все еще могут быть проблемы с кодировкой ).

Правильный путь!

Используйте Расширения шрифтов ! , если вы хотите создать свой собственный (см. Ссылку ниже), отчеты jasper также распространяют jar-файл расширения шрифта по умолчанию (jasperreports-fonts-x.x.x.jar), который поддерживает fontName DejaVu Sans, DejaVu Serif и DejaVu Sans Mono

<font fontName="DejaVu Sans"/>

Из окончательного руководства по JasperReport:

Мы настоятельно рекомендуем людям использовать только шрифты, полученные из шрифта. расширения, потому что это единственный способ убедиться, что шрифты будет доступно приложению, когда отчеты будут выполнены в во время выполнения. Использование системных шрифтов всегда сопряжено с риском для отчетов. работать правильно при развертывании на новой машине, которая может не иметь эти шрифты установлены

Ссылки на StackOverflow о том, как правильно отображать шрифты в pdf

Контрольный список того, как правильно отображать шрифт в формате pdf

Создание расширений шрифтов с помощью JasperSoft Studio

Создание расширений шрифтов с помощью iReport

21 голосов
/ 13 июля 2011

Я использую IReport для установки шрифта:

Инструменты -> Параметры -> Шрифты -> Нажмите Установить шрифт

Затем выберите шрифт и нажмите

-> экспортировать как расширение и ввести имя myfont.jar

добавить этот jar, а также spring.jar * в путь сборки.

* скопировать spring.jar из Jaspersoft \ iReport-3.7.0 \ ireport \ modules \ ext

12 голосов
/ 12 августа 2013

Для CentOS:

wget msttcorefonts

Тогда:

tar -zxvf msttcorefonts.tar.gz
cp msttcorefonts/*.ttf  /usr/share/fonts/TTF/
fc-cache -fv 

В конце концов, перезапустите JVM.

11 голосов
/ 24 сентября 2012

sudo apt-get install msttcorefonts работает (в нашей среде разработки Ubuntu), но это не очень хорошее решение.

Вместо этого мы связали шрифты с нашим приложением на основе этого совета . Их JAR-файл включает следующие шрифты:

  • Arial
  • Times New Roman
  • Курьер Новый
  • Comic Sans MS
  • Грузия
  • Verdana
  • моноширинный

Прямая ссылка для скачивания jar: Maven ver 1.0. DynamicFonts

7 голосов
/ 05 сентября 2015

Существует три способа избежать такой проблемы.

Способ 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, выбрав «Инструменты >> Параметры >> Шрифты >> Установить шрифт», затем выберите весь шрифт и экспортируйте его, нажав «Экспортировать как расширение» с расширением .jar.

Вы можете использовать этот jar для Jasperreports-font.X.X.X.jar, который будет присутствовать в вашей библиотеке проекта или пути к классам.

4 голосов
/ 20 октября 2010

Я решил это, выбрав только «SansSerif» или «Serif», а не «Arial» или «Times New Roman».

3 голосов
/ 11 июля 2011

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

net.sf.jasperreports.awt.ignore.missing.font = истина

в ваш файл jasperreports.properties.

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

2 голосов
/ 05 ноября 2010

может сделать ваши собственные шрифты через iReport и конвертировать как файлы jars

2 голосов
/ 21 мая 2012

Вы можете сделать это, установив шрифты, то есть везде, где вы хотите запустить это конкретное приложение. Самый простой способ - просто добавить эту строку bl в файл jrxml:

 <property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>

Надеюсь, это поможет.

...