2010-10-21 9 views
12

Po aktualizacji Jaspera do ostatniej wersji, zatrzymał znalezienie jednej czcionki: Symbol. Pozostałe czcionki wydają się być w porządku. Mam kilka ttfs w tym samym katalogu, gdzie Jasper jest uruchamiany program jest tylko mały wrapper do generowania plików PDF, a to rzuca ten błąd:Jasper przestaje znajdować jedną czcionkę

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)</pre> 

Katalog, w którym program jest uruchomiony:

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

Wszystkie inne czcionki są znalezione. Och, w moim laptopie (macosx) działa dobrze, tylko zepsuje się na serwerze (Debian). Otworzyłem symbol.ttf i otworzyłem go dobrze na Mac OS X (na wypadek, gdyby plik był uszkodzony).

Jakieś pomysły, co może się dziać?

Odpowiedz

13

spróbuj dodać linię

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

do jasperreports.properties pliku.

+5

To nie sprawia, że ​​znajduje czcionkę, ale sprawia, że ​​nie narzeka na nią i używa innych czcionek. Ponieważ było to poprzednie zachowanie i wszyscy byli z niego zadowoleni, właśnie to zrobiłem, chociaż nie jest to optymalne rozwiązanie. – Pablo

+2

To nie rozwiązuje problemu, po prostu ignoruje problem. –

+0

To jest domyślny serwer jasperserver, ale nadal dostaję błąd dotyczący brakujących czcionek. –

2

Cóż, czcionka musi być zainstalowana w systemie operacyjnym, w którym uruchomiony jest raport.

+1

Rzeczywiście. Jasperreports wyszukuje czcionki dostępne w systemie operacyjnym. Na przykład, jeśli zaprojektujesz raport w systemie Windows i uruchomisz aplikację w systemie Linux, otrzymasz coś innego niż to, co zobaczyłeś w iReporcie, chyba że użyjesz czcionek, które mogą być używane w obu środowiskach. – Alfabravo

1

trzy proste kroki, aby rozwiązać ten problem byłby

  1. Otwarte JasperReports-x.x.x.jar, w moim przypadku JasperReports-3.7.2.jar.
  2. Zlokalizuj plik default.jasperreports.properties i otwórz go.
  3. Znajdź linia net.sf.jasperreports.awt.ignore.missing.font = false i zmień wartość z false na true net.sf.jasperreports.awt.ignore.missing.font = true.
  4. Zaktualizuj słoik.
  5. Dodaj do ścieżki clas swojego projektu.

Problem został rozwiązany.

+7

Nie ma potrzeby edytowania pliku JAR. Po prostu musisz utworzyć jasperreports.properties i dodać go do ścieżki klasy tylko z właściwościami, które chcesz zmodyfikować (zgodnie z zaakceptowanym rozwiązaniem). –

+0

Zrobiłem, że działa dobrze, gdy prowadząc klasę od zaćmienia. ale nie działa, gdy eksportuję jako Runnable jar, daje mi poniżej errror "net.sf.jasperreports.engine.JRException: Nie znaleziono strumienia wejściowego w: fonts.xml" –

5

na Ubuntu Musiałem odinstalować czcionki i zainstaluj je:

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

Następnie, działa ok.

0

Aktualizacja dla roku 2015:

Dodaj do tego (lub Odkomentuj in) /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 

Następnie uruchom ten:

sudo apt-get update 
sudo apt-get install msttcorefonts 
0

jestem przy użyciu JasperReports 6.3.1. I rozwiązać problem dodając następującą linię w moim .jrxml:

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

ten sposób nasz raport będzie wyglądać coś innego, w zależności od czcionek, które są fabrycznie zainstalowany w systemie.W moim przypadku nie stanowi to problemu i nie jestem zainteresowany dodaniem dodatkowej czcionki do mojego projektu, ponieważ muszę być tak lekki, jak to tylko możliwe.


W przypadku, gdy chcesz korzystać z oryginalnych czcionek raportu we wszystkich środowiskach wykonawczych, łatwym rozwiązaniem jest dodanie niezbędnych zależności do projektu.

Przykładem dla Maven:

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

Możesz także pobrać biblioteki i dodać je ręcznie do projektu, jednak będzie działać.


Mam nadzieję, że uznasz je za użyteczne.