Шрифт недоступен для JVM с отчетами Jasper

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

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

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

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

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

Ответ 1

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

Ответ 2

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

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

<font fontName="Arial"/>

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

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

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

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

<font fontName="DejaVu Sans"/>

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

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

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

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

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

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

Ответ 3

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

tools → options → fonts → click install font

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

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

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

* copy spring.jar от Jaspersoft\iReport-3.7.0\ireport\modules\ext

Ответ 4

Для CentOS:

wget msttcorefonts

Тогда:

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

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

Ответ 5

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

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

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

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

Ответ 6

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

Способ 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.

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

Ответ 7

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

Ответ 9

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

Ответ 10

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

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

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

Ответ 11

Я столкнулся с проблемой с моим веб-приложением на основе Spring 3 и развернутым на Weblogic 10.3 в Oracle Linux 6. Решение, упомянутое в link не работал у меня.

Мне пришлось сделать следующие шаги:  1. Скопируйте файлы шрифта Arial *.ttf в каталог JROCKIT_JAVA_HOME/jre/lib/fonts  2. Сделайте записи шрифтов в fontconfig.properties.src  3. Перезапустите кластер из консоли Weblogic.

filename.Arial=Arial.ttf
filename.Arial_Bold=Arial_Bold.ttf
filename.Arial_Italic=Arial_Italic.ttf
filename.Arial_Bold_Italic=Arial_Bold_Italic.ttf

Ответ 12

Для Debian

добавить

non-free contrib

для deb и deb-src в файле /etc/apt/sources.list, т.е.

deb http://ftp.debian.org/debian/ squeeze main non-free contrib
deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib

Тогда

apt-get update
apt-get install msttcorefonts

Конечно, вам нужно перезапустить jasperserver. то есть:

/opt/jasperreports-server-cp-4.5.0/ctlscript.sh restart

Измените для своей версии/пути.

Ответ 13

Скопируйте свои шрифты в следующий каталог JDK_HOME\JRE\Lib\шрифты

Ответ 14

Создать отчет о jasper на нескольких языках (Unicode)

1) Установить шрифт в ireport desginer

2) создать расширение шрифта (мы будем использовать его в приложениях classpath)

3) установить шрифт на os (необязательно)

4) вставьте все .ttf шрифта в каталог jre- > lib- > fonts (иначе веб-приложение будет бросать шрифт ошибки, недоступный JVM)

Ответ 15

На самом деле я исправил эту проблему очень простым способом.

  • перейдите к home path, например /root
  • создать папку с именем .fonts
  • скопируйте all your font files в .fonts, вы можете скопировать шрифт из C:\windows\fonts, если вы используете окна.
  • sudo apt-get install fontconfig
  • fc-cache –fv, чтобы переустановить кеши шрифтов.

Ответ 16

Решение в 2 этапа (если вы используете centOS)

  • Загрузите пакет rpm rpm для Microsoft.

    [[email protected]~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
    
  • Установите пакет rpm.

    [[email protected]~/]# rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm
    

Ответ 17

Привет У вас возникли проблемы с просмотром документов, созданных в Windows?

Вы можете легко попробовать прекрасное решение:

yum install curl cabextract xorg-x11-font-utils fontconfig

rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm

После этого мне нужно перезагрузить мою систему CentOS6.

Источник: http://mscorefonts2.sourceforge.net/