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



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



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


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



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



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

1322   17  

17 ответов:

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

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

Сервис -> Параметры -> шрифты -> нажмите установить шрифт

выберите шрифт и нажмите кнопку

-> экспорт как расширение и введите имя myfont.банку

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

*копия весна.jar от Jaspersoft\iReport-3.7.0\ireport \ modules\ext

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

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

<font fontName="Arial"/>

Да, вы можете отключить, установив net.научная фантастика.jasperreports.ОУ.игнорировать.недостающий.шрифт false, но вы будете иметь экспорт несоответствий.

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

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

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

<font fontName="DejaVu Sans"/>

из руководства JasperReport Ultimate:

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

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

памятка о том, как правильно шрифт в pdf

генерация шрифтов-расширений с помощью JasperSoft Studio

генерировать расширения шрифтов с помощью iReport

Для CentOS:

wget msttcorefonts

затем:

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

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

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

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

  • Ариал
  • Times New Roman
  • Курьер Новая
  • Comic Sans MS
  • Грузии
  • Вердана
  • Моноширинный

прямая ссылка для загрузки jar: Maven ver 1.0. DynamicFonts

есть три способа, чтобы избежать такой проблемы.

метод 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 : отсутствует свойство font.

Сначала установите отсутствующие шрифты в IReport, выбрав "Инструменты > > Параметры > > шрифты > > установить шрифт", затем выберите шрифт all и экспортируйте его, нажав" экспорт как расширение".расширение jar.

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

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

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

net.научная фантастика.jasperreports.ОУ.игнорировать.недостающий.шрифт правда=

к вашим jasperreports.файл свойств.

Джаспер перестает находить один шрифт

можно сделать свои собственные шрифты с помощью iReport и преобразования, как файлы jars

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

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

надеюсь, что это помогает.

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

Я должен был сделать следующие шаги - 1. Скопируйте Arial*.файлы шрифтов ttf в каталог jrockit_java_home/jre/lib / fonts 2. Сделайте записи шрифтов в fontconfig.свойства.src 3. Перезапустите кластер из WebLogic console

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

Для Debian

добавить

non-free contrib

to deb и deb-src в /etc/apt / sources.список ie:

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

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

скопируйте шрифты в следующий каталог JDK_HOME\jre\lib \ fonts

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

1) Установите шрифт в iReport desginer

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

3)установить шрифт в ОС(опционально)

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

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

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

Эй возникли проблемы с просмотром документов, созданных в 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/

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

  1. загрузите пакет Microsoft core fonts rpm.

    [root@WEBSVR~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
    
  2. установите пакет rpm.

    [root@WEBSVR~/]# rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm
    

Comments

    Ничего не найдено.