it-swarm.dev

Czcionka nie jest dostępna dla JVM z Jasper Reports

Próbuję wygenerować raport za pomocą DynamicJasper, ale otrzymuję następujący błąd:

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

Zainstalowano msttcorefonts , ale chyba JVM nie używa z niego żadnych czcionek. 

Używam Ubuntu 10.04. 

Jak mogę to naprawić?

72
Andrew

Próbowałem zainstalować mscorefonts, ale pakiet został zainstalowany i zaktualizowany.

Sudo apt-get update
Sudo apt-get install ttf-mscorefonts-installer

Próbowałem wyszukać czcionkę w systemie plików za pomocą:

ls /usr/share/fonts/truetype/msttcorefonts/

Ten folder miał właśnie README z poprawnymi instrukcjami dotyczącymi instalacji. 

cat /usr/share/fonts/truetype/msttcorefonts/README

Potrzebujesz do tego połączenia internetowego:

Sudo apt-get install --reinstall ttf-mscorefonts-installer

Ponownie zainstalowałem plik ttf-mscorefonts-installer (jak pokazano powyżej, upewniając się, że akceptujesz umowę EULA!), A problem został rozwiązany.

57
Braully Rocha

JasperReports podnosi JRFontNotFoundException w przypadku, gdy czcionka użyta wewnątrz szablonu raportu nie jest dostępna dla maszyny JVM jako czcionka systemowa lub czcionka pochodząca z rozszerzenia czcionki JR. Dzięki temu unika się wszystkich problemów spowodowanych niedopasowaniem metryk czcionek i mamy wczesne ostrzeżenie o niespójności.

Raporty Jaspera próbują pomóc w rozwoju raportu, stwierdzając, że nie może poprawnie wyeksportować raportu, ponieważ nie może znaleźć czcionki zdefiniowanej w TextField lub StaticText 

<font fontName="Arial"/>

Tak, możesz wyłączyć, ustawiając net.sf.jasperreports.awt.ignore.missing.font na false, ale będziesz mieć niezgodności eksportu.

Tak, możesz zainstalować czcionkę jako czcionkę systemową JVM (ale musisz to zrobić na każdym używanym komputerze, który może generować raport i nadal możesz mieć problemy z kodowaniem).

Właściwy sposób!

Użyj Rozszerzenia czcionek !, Jeśli chcesz tworzyć własne (patrz link poniżej), raporty jaspera dystrybuują również domyślny słoik rozszerzenia czcionki (jasperreports-fonts-x.x.x.jar), który obsługuje nazwę fontName DejaVu Sans, DejaVu Serif i DejaVu Sans Mono

<font fontName="DejaVu Sans"/>

Z przewodnika JasperReport Ultimate Guide:

Zdecydowanie zachęcamy ludzi do używania tylko czcionek pochodzących z czcionki rozszerzenia, ponieważ jest to jedyny sposób, aby upewnić się, że czcionki będzie dostępny dla aplikacji, gdy raporty są wykonywane w runtime. Używanie czcionek systemowych zawsze niesie ryzyko raportów działać poprawnie po wdrożeniu na nowej maszynie, która może nie mieć zainstalowane czcionki

Linki w StackOverflow dotyczące poprawnego renderowania czcionek w formacie pdf

Lista kontrolna poprawnego renderowania czcionki w formacie pdf

Generuj rozszerzenia czcionek w JasperSoft Studio

Generowanie rozszerzeń czcionek za pomocą iReport

23
Petter Friberg

Używam IReport do zainstalowania czcionki:

tools -> options -> fonts -> kliknij install font

Następnie wybierz czcionkę i kliknij 

-> wyeksportuj jako rozszerzenie i wpisz nazwę myfont.jar

dodaj ten jar, a także spring.jar* do twojej ścieżki budowania.

* skopiuj plik spring.jar z Jaspersoft iReport-3.7.0 report moduły ext

21
juan

Dla CentOS:

wget msttcorefonts

Następnie:

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

W końcu zrestartuj JVM.

12
Ricardo Carmo

Sudo apt-get install msttcorefonts działa (w naszym środowisku programistycznym Ubuntu), ale nie jest dobrym rozwiązaniem. 

Zamiast tego wiązaliśmy czcionki z naszą aplikacją na podstawie tej wskazówki . Ich plik JAR zawiera następujące czcionki,

  • Arial
  • Czcionka Times New Roman
  • Courier New 
  • Comic Sans MS 
  • Gruzja
  • Verdana
  • Monospaced

Bezpośredni link do pobrania słoika: Maven ver 1.0. DynamicFonts

11
user799188

Istnieją trzy metody uniknięcia tego problemu.

Metoda 1: przez ustawienie ignorowania brakującej właściwości czcionki.

JRProperties.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");

lub możesz ustawić tę właściwość, wprowadzając następujący wiersz w pliku .jrxml.

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

Metoda 2: ustawiając domyślną właściwość czcionki.

JRProperties.setProperty("net.sf.jasperreports.default.font.name", "Sans Serif");

lub możesz ustawić tę właściwość, wprowadzając następujący wiersz w pliku .jrxml.

<property name="net.sf.jasperreports.default.font.name" value="Sans Serif"/>

Metoda 3: przez dodanie brakującej właściwości czcionki.  

Najpierw zainstaluj brakujące czcionki w IReport, wybierając „Narzędzia >> Opcje >> Czcionki >> Zainstaluj czcionkę”, a następnie zaznacz całą czcionkę i wyeksportuj ją, klikając „Eksportuj jako rozszerzenie” z rozszerzeniem .jar.

Możesz użyć tego słoika dla Jasperreports-font.X.X.X.jar, który będzie obecny w bibliotece projektu lub ścieżce klasy. 

6
Mayur Bhokase

Rozwiązałem to, wybierając tylko „SansSerif” lub „Serif”, a nie „Arial” lub „Times New Roman”. 

4
lkdg

Spróbuj dodać linię

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

do pliku jasperreports.properties.

Jasper przestaje znajdować jedną czcionkę

3
Enrico Sanna

Możesz to zrobić, instalując czcionki, czyli wszędzie tam, gdzie chcesz uruchomić tę konkretną aplikację. Najprostszym sposobem jest dodanie tej linii bl do pliku jrxml:

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

Mam nadzieję, że to pomoże.

2
Stephen

może tworzyć niestandardowe czcionki za pomocą iReport i konwertować je na pliki słoików 

2
mavirroco

Stałem wobec problemu z moją aplikacją internetową opartą na Spring 3 i wdrożoną na Weblogic 10.3 na Oracle Linux 6. Rozwiązanie wymienione w link nie działało dla mnie.

Musiałem wykonać następujące kroki - 1. Skopiuj pliki czcionek Arial * .ttf do katalogu JROCKIT_Java_HOME/jre/lib/fonts 2. Wprowadź wpisy czcionek w fontconfig.properties.src 3. Uruchom ponownie klaster z konsoli 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
2
Ujjwal

Jeśli używasz maven w swoim projekcie, możesz po prostu dodać zależność jasper-fonts do pom.xml:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-fonts</artifactId>
    <version>6.8.1</version>
</dependency>

Zainstalowanie brakującej czcionki w systemie może być działającym rozwiązaniem, ale nie dla mnie, nie chciałem instalować brakujących czcionek po każdym wdrożeniu na nowym serwerze, zamiast tego zdecydowałem się osadzić czcionkę w aplikacji.

Pozdrowienia.

1
Yassir

Utwórz raport jaspisu w wielu językach (Unicode)

1) Zainstaluj czcionkę w desreger ireport

2) utwórz rozszerzenie czcionki (użyjemy jej w ścieżce aplikacji)

3) zainstaluj czcionkę na os (opcjonalnie)

4) wklej całą czcionkę .ttf do katalogu jre-> lib-> fonts (w przeciwnym razie aplikacja WWW wyśle ​​czcionkę błędu do JVM)

1
rushabh

Dla Debiana

dodaj

non-free contrib

do deb i deb-src w /etc/apt/sources.list tj .:

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

Następnie

apt-get update
apt-get install msttcorefonts

Oczywiście musisz ponownie uruchomić serwer jasper. to znaczy:

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

Zmień na swoją wersję/ścieżkę.

1
d-_-b

Rozwiązanie w 2 krokach (jeśli używasz centOS)

  1. Pobierz pakiet rpm czcionek podstawowych Microsoft.

    [root@WEBSVR~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
    
  2. Zainstaluj pakiet rpm.

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

Właściwie naprawiłem ten problem w bardzo prosty sposób

  1. idź do swojegohome path, jak /root
  2. utwórz folder o nazwie.fonts
  3. skopiuj swój all your font files do .fonts, możesz skopiować czcionkę z C:\windows\fonts, jeśli używasz okien.
  4. Sudo apt-get install fontconfig
  5. fc-cache –fv do ponownego buforowania czcionek.
0
Neeson.Z

Skopiuj swoje czcionki do następującego katalogu JDK_HOME czcionki lib

0
Ahmad Zyoud

Hej Masz problemy z wyświetlaniem dokumentów wyprodukowanych w systemie Windows?

Możesz wypróbować proste rozwiązanie:

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

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

Po tym muszę ponownie uruchomić mój system CentOS6.

Źródło: http://mscorefonts2.sourceforge.net/

0
Fernando Pie