फॉन्ट जेवीएम रिपोर्ट्स के साथ जेवीएम के लिए उपलब्ध नहीं है


91

मैं डायनेमिकजैस्पर के साथ रिपोर्ट जनरेट करने की कोशिश कर रहा हूं, लेकिन मुझे निम्न त्रुटि मिल रही है:

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

msttcorefonts स्थापित है, लेकिन मुझे लगता है कि JVM इससे किसी भी फॉन्ट का उपयोग नहीं कर रहा है।

मैं Ubuntu 10.04 का उपयोग कर रहा हूं।

मैं इसे कैसे ठीक करूं?


3
मैं वास्तव में इसे अनदेखा कर रहा हूं ... बस निम्नलिखित "net.sf.jasperreports.awt.ignore.missing.font = true" बुरा विचार सेट करें ... लेकिन एक पल के लिए समस्या हल करता है ....
एंड्रयू

आपको उबंटू में Microsoft फोंट स्थापित करने की आवश्यकता होगी, जानकारी के लिए इस लिंक को देखें .. embraceubuntu.com/2005/09/09/installing-microsoft-fonts
शिवरामकृष्णन

1
आप इसे कहाँ सेट करते हैं मैं jbilling में jasperreports के एक एम्बेडेड संस्करण के साथ काम कर रहा हूँ जहाँ कोई jasperreports.properties फ़ाइल संपादित करने के लिए मौजूद है।
दरगाह


1
@ और, यह एक अच्छा समाधान नहीं लगता है (मुझे पता है कि सवाल पुराना है), लेकिन शायद इसका बेहतर यह है कि हम रिपोर्ट असंगति से बचते हैं, मैं जवाब पर पारित हो गया हूं।
पेट्टर फ्रबर्ग

जवाबों:


63

मैंने 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 स्वीकार करना सुनिश्चित करता है!) और समस्या हल हो गई थी।


5
FYI करें अन्य linux जायके की कोशिश करें sudo apt-get install msttcorefonts
KCD

CentOS और RHEL6 के लिए आप EULA समस्या का समाधान कैसे करते हैं? yum install आपको स्वीकार करने का कोई विकल्प नहीं देता, कोई विचार?
दरगाह

सबसे आम विंडोज़ ओएस के बारे में क्या?
सरज़

1
यह एक पीसी पर चारों ओर एक काम है, यह किसी भी एन्कोडिंग समस्याओं को हल नहीं करेगा, सही तरीका है फ़ॉन्ट-एक्सटेंशन का उपयोग करने के लिए मैंने एक उत्तर पोस्ट किया है
पेट्टर फ्रीबर्ग

1
उत्तर उस स्थिति के लिए सही है जब हमारे पास पहले से ही फोंट स्थापित थे लेकिन बिना लाइसेंस के। यहां उन मामलों में प्रदर्शन करने के लिए कदम हैं जो आप पहले स्वचालित स्थापना को सही तरीके से करने के लिए हैं: sudo echo ttf-mscorefonts- इंस्टॉलर msttcorefonts / स्वीकार किए गए-mscorefonts-eula सच का चयन करें। debconf-set-selections && apt-get install -y -q ttf-mscorefonts-संस्थापक
अलेक्जेंडर लेच

35

JasperReports उस स्थिति में JRFontNotFoundException उठाता है , जहाँ रिपोर्ट टेम्पलेट के अंदर उपयोग किया जाने वाला फ़ॉन्ट JVM या तो सिस्टम फ़ॉन्ट या JR फ़ॉन्ट एक्सटेंशन से आने वाले फ़ॉन्ट के रूप में उपलब्ध नहीं होता है। यह सुनिश्चित करता है कि फॉन्ट मेट्रिक्स मिसमैच के कारण होने वाली सभी समस्याओं से बचा जा सके और हमारे पास असंगतता के बारे में प्रारंभिक चेतावनी है।

जैस्पर रिपोर्ट आपकी रिपोर्ट के विकास में आपकी मदद करने की कोशिश कर रही है , जिसमें कहा गया है कि यह आपकी रिपोर्ट को सही ढंग से निर्यात नहीं कर सकता है क्योंकि यह फ़ॉन्ट को TextFieldया में परिभाषित नहीं कर सकता है।StaticText

<font fontName="Arial"/>

हाँ, आप इसे net.sf.jasperreports.awt.ignore.missing.font पर सेट करके सत्य में अक्षम कर सकते हैं, लेकिन आपके पास निर्यात असंगतताएँ होंगी ।

हाँ, आप फ़ॉन्ट को JVM सिस्टम फॉन्ट के रूप में स्थापित कर सकते हैं (लेकिन आपको इसका उपयोग प्रत्येक पीसी पर करने की आवश्यकता है जो रिपोर्ट उत्पन्न कर सकता है और आपको अभी भी एन्कोडिंग समस्या हो सकती है )।

सही तरीका!

फ़ॉन्ट एक्सटेंशन का उपयोग करें ! , यदि आप अपना स्वयं का बनाना चाहते हैं (नीचे लिंक देखें), तो जैस्पर रिपोर्ट्स एक डिफ़ॉल्ट फॉन्ट-एक्सटेंशन जार ( jasperreports-fonts-x.x.x.jar) वितरित करती है , जो फॉन्टनाम का समर्थन करती है DejaVu Sans, DejaVu SerifऔरDejaVu Sans Mono

<font fontName="DejaVu Sans"/>

JasperReport अंतिम गाइड से:

हम लोगों को फ़ॉन्ट एक्सटेंशन से प्राप्त केवल फोंट का उपयोग करने के लिए दृढ़ता से प्रोत्साहित करते हैं, क्योंकि यह सुनिश्चित करने का एकमात्र तरीका है कि फोंट आवेदन के लिए उपलब्ध होगा जब रिपोर्ट रनटाइम पर निष्पादित की जाती है। सिस्टम फोंट का उपयोग करने से हमेशा रिपोर्ट के ठीक से काम नहीं करने का जोखिम होता है जब एक नई मशीन पर तैनात किया जाता है जिसमें उन फोंट को स्थापित नहीं किया जा सकता है

फोंट को सही ढंग से पीडीएफ में कैसे प्रस्तुत किया जाए, इस पर स्टैकऑवरफ्लो के लिंक

कैसे सही ढंग से पीडीएफ में फ़ॉन्ट प्रस्तुत करने के लिए चेकलिस्ट

जैस्परस्फ़्ट स्टूडियो के साथ फ़ॉन्ट-एक्सटेंशन जेनरेट करें

IReport के साथ फ़ॉन्ट-एक्सटेंशन जेनरेट करें


क्या आप मुझे इसका कारण बता सकते हैं कि जेस्पर और जेवीएम पीडीएफ को एक फॉन्ट के साथ प्रस्तुत नहीं कर सकते हैं जो सिस्टम में मौजूद है (सी: \ विंडोज़ \ फोंट पर स्थित है), इसके बजाय मुझे जार फ़ॉन्ट एक्सटेंशन बनाना होगा और इसे लाइब्रेरी के रूप में जोड़ना होगा। परियोजना की कक्षा पथ (मैं जावा और ग्रहण का उपयोग कर रहा हूं)। मैंने उत्तर के लिए Google पर जाने की कोशिश की लेकिन समझ में नहीं आया। इसके अलावा, मैं इस निर्यात-पीडीएफ-फ़ॉन्ट-समस्याओं को भी अपाचे FOP के साथ देखता हूं (कोई फ़ॉन्ट एक्सटेंशन की आवश्यकता नहीं है लेकिन मुझे एक फ़ॉन्ट-मीट्रिक-फ़ाइल बनानी थी और फ़ॉन्ट के सही तरीके से प्रस्तुत किए जाने के लिए कुछ अतिरिक्त कॉन्फ़िगरेशन किए थे)
EagerToLearns

1
@EagerToLearn यह सब आईटीबीटी लाइब्रेरी के लिए नीचे आता है जो पीडीएफ़ पैदा कर रहा है, फोंट को सही ढंग से रेंडर करने के लिए इटनेक्स्ट को फॉन्ट-एक्सटेंशन की ज़रूरत होती है (जहाँ न केवल फॉन्ट को शामिल किया जाता है, बल्कि एन्कोडिंग भी है, अगर एम्बेडेड ecc निर्दिष्ट है)। यदि आप इसे प्रदान नहीं करते हैं, तो itext वह करेगा जो वे आपके फ़ॉन्ट को प्रस्तुत करने के लिए "सर्वश्रेष्ठ प्रयास" कहते हैं। आप वह नहीं कर रहे हैं, जिसकी हमें आवश्यकता है (दस्तावेज में लिखा गया है), हमारी पूरी कोशिश करते हैं, लेकिन दोष आपका है। इसलिए, इस प्रश्न पर स्वीकृत उत्तर सही नहीं है !, यदि आप की आपूर्ति नहीं होती है, तो फॉन्ट एक्सटेंशन की आवश्यकता होती है, जो कुछ भी बनाया जाता है उसके साथ रहना होगा।
पेट्टर फ्रीबर्ग

उत्तर के लिए धन्यवाद, लेकिन फिर भी मुझे केवल यह मिलता है कि फॉन्ट का मुद्दा iText लाइब्रेरी के काम करने के तरीके से जुड़ा हुआ है। हो सकता है इस फ़ॉन्ट बातें मेरे तकनीकी समझने की क्षमता से परे :( तरीका है
EagerToLearn

@eag यह बहुत अधिक नहीं है, तो यह समझने के लिए, एक फ़ॉन्ट प्रदान करने के लिए आपको यह जानना होगा कि कहां .ttf है और आपको यह जानना होगा कि टेक्स्ट को एन्कोडिंग क्या है। इस जानकारी को जानने के लिए एफबीआई के देवों ने फ़ॉन्ट एक्सटेंशन बनाया है, यदि आप इसे प्रदान नहीं करते हैं तो उन्हें अनुमान लगाने की आवश्यकता है कि यह कुछ मामलों में काम क्यों नहीं कर रहा है क्योंकि "अनुमान लगाना" सही नहीं है, लेकिन आप के लिए देयता को दोष नहीं दे सकते चूंकि उन्होंने आपको "अनुमान लगाने" से बचने के लिए एक प्रणाली प्रदान की है
पेट्टर फ्रीबर्ग

22

मैं फ़ॉन्ट स्थापित करने के लिए IReport का उपयोग करता हूं:

उपकरण -> विकल्प -> फोंट -> स्थापित फ़ॉन्ट पर क्लिक करें

फिर फ़ॉन्ट का चयन करें और क्लिक करें

-> विस्तार के रूप में निर्यात और नाम myfont.jar टाइप करें

इस जार को जोड़ें और अपने निर्माण पथ पर स्प्रिंग.जर * भी डालें ।

* Jaspersoft \ iReport-3.7.0 \ ireport \ मॉड्यूल \ ext से spring.jar की प्रतिलिपि बनाएँ


1
पूरा करने के लिए, एरियल ttf c: / windows / फ़ॉन्ट्स (जीत xp में कम से कम): arial.ttf, arialbd.ttf (bold), ariali.ttf (italic), arialbi (बोल्ड-इटालिक)
jneira

निर्माण पथ पर spring.jar को जोड़ना इसे ठीक करता है।
फिशजैड

यह विधि वास्तव में मेरे लिए काम करती है। यह फ़ॉन्ट को जार फ़ाइल के रूप में पैकेज करता है, आप इसे क्लासपाथ में जोड़ते हैं, और चीजें जस्ट वर्क।
सत्या

यदि फ़ॉन्ट-एक्सटेंशन को सही ढंग से बनाया गया है, तो स्प्रिंग को जोड़ने की कोई आवश्यकता नहीं है।
पेट्टर फ्रीबर्ग

यह उपकरण-> विकल्प-> फोंट-> क्लिक इंस्टॉल मैक पर उपलब्ध नहीं है। :( कोई सुझाव?
एल-सैमुअल्स

13

sudo apt-get install msttcorefonts काम करता है (हमारे Ubuntu विकास पर्यावरण पर), लेकिन एक बहुत अच्छा समाधान नहीं है।

इसके बजाय, हमने इस टिप के आधार पर अपने आवेदन के साथ फोंट को बंडल किया । उनकी JAR फ़ाइल निम्नलिखित फोंट को बंडल करती है,

  • एरियल
  • टाइम्स न्यू रोमन
  • नया संदेशवाहक
  • कॉमिक संस एम.एस.
  • जॉर्जिया
  • Verdana
  • Monospaced

Jar डाउनलोड करने के लिए सीधा लिंक: Maven ver 1.0। DynamicFonts


इसे अब मानक mvan
Markus Pscheidt


9

ऐसी समस्या से बचने के लिए तीन तरीके हैं।

विधि 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 एक्सटेंशन के साथ "एक्सपोर्ट के रूप में एक्सपोर्ट" पर क्लिक करके एक्सपोर्ट करें।

आप इस जार का उपयोग जैस्पररेपोर्ट्स-फॉन्ट.एक्सएक्सएक्सजर के लिए कर सकते हैं जो आपके प्रोजेक्ट लाइब्रेरी या क्लासपाथ में मौजूद होगा।


5

मैंने इसका समाधान 'सैंसरीफ़' या 'सेरिफ़' चुनकर किया, न कि 'एरियल' या 'टाइम्स न्यू रोमन'।


6
अपवाद के दस्तावेज़ ( jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/… ) के अनुसार, यह विधि स्पष्ट रूप से अनुशंसित नहीं है। यह अनपेक्षित रेंडरिंग समस्याओं का कारण बन सकता है, क्योंकि इन फोंट को अलग-अलग सिस्टम पर अलग-अलग सिस्टम फोंट में मैप किया जा सकता है।
डग

3

यदि आप अपनी परियोजना में मावेन का उपयोग कर रहे हैं, तो आप बस pom.xml पर जास्पर-फोंट निर्भरता जोड़ सकते हैं:

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

सिस्टम पर अनुपलब्ध फ़ॉन्ट को स्थापित करना एक कार्यशील समाधान हो सकता है लेकिन मेरे लिए नहीं, मैं नए सर्वर में प्रत्येक परिनियोजन के बाद लापता फ़ॉन्ट को स्थापित नहीं करना चाहता था, इसके बजाय मैंने एप्लिकेशन के साथ फ़ॉन्ट को एम्बेड करने का विकल्प चुना।

सादर।


2

iReport के माध्यम से अपने कस्टम फोंट बना सकते हैं और जार फ़ाइलों की तरह परिवर्तित कर सकते हैं


2

लाइन जोड़ने का प्रयास करें

net.sf.jasperreports.awt.ignore.missing.font सच =

आपकी jasperreports.properties फ़ाइल के लिए।

जैस्पर एक-एक फ़ॉन्ट ढूंढना बंद कर देता है


1
और एक बुरा विचार है ... निर्यात की विसंगतियां!
पेट्टर फ्रीबर्ग

@PetterFriberg नहीं, यह एक अच्छा कमबैक तंत्र है। आप हमेशा JVM को नियंत्रित नहीं कर सकते। यह हमेशा एक अच्छा विचार है, भले ही परिणाम एक आदर्श हो, भले ही यह आदर्श न हो लेकिन ग्राहक मशीन पर एक लापता फॉन्ट द्वारा किए गए एप्लिकेशन क्रैश से बेहतर है।
जॉइंटिंग

@jwenting फ़ॉन्ट-एक्सटेंशन जोड़ते हैं और यह क्रैश नहीं होगा। मेरा विश्वास करो अगर आप अक्षम कर रहे हैं कि आप कुछ गलत कर रहे हैं, तो आपके पास गलत रिपोर्ट उत्पन्न होगी बजाय आपको मूल समस्या (अनुपलब्ध फ़ॉन्ट-एक्सटेंशन) को हल करना चाहिए। और हाँ आप हमेशा JVM को नियंत्रित कर सकते हैं।
पेट्टर फ्रीबर्ग

@jwenting मत नोट करें: समाधान सर्वर पर फोंट स्थापित करने के लिए नहीं है (जैसा कि उत्तर में कहा गया है, यह गलत है!)। समाधान निर्भरता फ़ॉन्ट-एक्सटेंशन में जनरेट और जोड़ना है। सही उत्तर के लिए इसे देखें stackoverflow.com/a/35549391
Petter Friberg

@PetterFriberg जो अक्सर असंभव है। उदाहरण के लिए मैं एक सर्वर पर रन बनाए रखने के लिए आवेदन करता हूं, लेकिन उपयोगकर्ता को एक विशिष्ट नामकरण सम्मेलन के साथ कस्टम .jrxml फ़ाइलों को जोड़ने की अनुमति देता है ताकि हम मानक के रूप में जो भी प्रदान करते हैं, उसके ऊपर और बाहर कस्टम रिपोर्ट उत्पन्न कर सकें। नहीं चाहते हैं कि रिपोर्ट क्रैश हो जाए यदि सर्वर के पास उपलब्ध फोंट उपलब्ध नहीं है।।
जॉइंटिंग

2

आप इसे फोंट स्थापित करके कर सकते हैं, इसका मतलब है कि हर जगह आप उस विशेष एप्लिकेशन को चलाना चाहते हैं। सबसे सरल तरीका है कि इस ब्लर लाइन को अपनी jrxml फ़ाइल में जोड़ें:

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

आशा करता हूँ की ये काम करेगा।


1
हालांकि यह निर्यात विसंगतियां पैदा करेगा (इसलिए यह jrxml में संकेतित फ़ॉन्ट के साथ प्रस्तुत नहीं कर सकता है)। मेरा जवाब देखिए।
पेट्टर फ्रीबर्ग

2

डेबियन के लिए

जोड़ना

non-free contrib

/etc/apt/source.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

अपने संस्करण / पथ के लिए बदलें।


2

मैंने स्प्रिंग 3 पर आधारित अपने वेब एप्लिकेशन के साथ समस्या का सामना किया और ओरेकल लिनक्स 6 पर वेबलॉजिक 10.3 पर तैनात किया। लिंक पर उल्लिखित समाधान मेरे लिए काम नहीं किया।

मुझे निम्नलिखित कदम उठाने थे - 1. एरियल * .ttf फॉन्ट फाइल्स को JROCKIT_JAVA_HOME / jre / lib / फॉन्ट डायरेक्टरी में कॉपी करें। फॉन्टकोन्फिग.प्रोफाइटिस.rc में फोंट की एंट्री करें। 3. वेबलॉग कंसोल से क्लस्टर को रीस्टार्ट करें।

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

1

कई भाषाओं में जैस्पर रिपोर्ट बनाएं (यूनिकोड)

1) ireport desginer में फ़ॉन्ट स्थापित करें

2) फॉन्ट का विस्तार करें (हम इसका उपयोग क्लासपाथ में करेंगे)

3) ओएस (वैकल्पिक) पर फ़ॉन्ट स्थापित करें

4) सभी .ttf फ़ॉन्ट को jre-> lib-> फॉन्ट डायरेक्टरी में पेस्ट करें (अन्यथा वेब एप्लीकेशन एरर फाल्ट करेगा फॉन्ट JVM के लिए उपलब्ध नहीं है)


0

वास्तव में मैंने इस मुद्दे को बहुत ही सरल तरीके से तय किया

  1. अपने home pathजैसे जाओ/root
  2. नाम का फोल्डर बनाएं .fonts
  3. यदि आप विंडोज़ का उपयोग करते all your font filesहैं .fonts, तो आप इसे कॉपी कर सकते हैं, आप फ़ॉन्ट को कॉपी कर सकते C:\windows\fontsहैं।
  4. sudo apt-get install fontconfig
  5. fc-cache –fv फोंट कैश को फिर से चालू करने के लिए।

0

2 चरणों में समाधान (यदि आप सेंटो का उपयोग कर रहे हैं)

  1. Microsoft कोर फ़ॉन्ट rpm पैकेज डाउनलोड करें।

    [root@WEBSVR~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
    
  2. आरपीएम पैकेज स्थापित करें।

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


-1

अरे विंडोज पर निर्मित दस्तावेजों को देखने में परेशानी हो रही है?

आप एक आसान समाधान की कोशिश कर सकते हैं:

ym कर्ल काबरेक्ट्रेक्ट 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/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.