Jasper 보고서가있는 JVM에서 글꼴을 사용할 수 없습니다.


93

DynamicJasper로 보고서를 생성하려고하는데 다음과 같은 오류가 발생합니다.

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"나쁜 생각을 설정하십시오 ... 그러나 잠시 문제를 해결합니다 ....
Andrew

당신은 .. 내용은이 링크를 참조 우분투에서 마이크로 소프트 글꼴을 설치해야합니다 embraceubuntu.com/2005/09/09/installing-microsoft-fonts
Sivaramakrishnan

1
당신은 이것을 어디에 설정합니까? 편집 할 jasperreports.properties 파일이없는 jbilling에서 jasperreports의 임베디드 버전으로 작업하고 있습니다.
Darragh


1
@Andrew, 이것은 좋은 해결책이 아닌 것 같지만 (질문이 오래되었다는 것을 알고 있습니다) 보고서 불일치를 피하는 것이 더 좋을 수도 있습니다. 나는 대답을 전달했습니다.
Petter Friberg

답변:


64

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 on other linux flavors try sudo apt-get install msttcorefonts
KCD

CentOS 및 RHEL6의 경우 EULA 문제를 어떻게 해결합니까? yum install은 수락 옵션을 제공하지 않습니다. 아이디어가 있습니까?
Darragh

가장 일반적인 Windows OS는 어떻습니까?
Sarz 2015

1
이것은 하나의 PC에서 주변의 일, 그것은 어떤 인코딩 문제가 해결되지 것입니다 올바른 방법은 글꼴 확장을 사용하는 것입니다 내가 대답을 게시 한
페터 프리 버그

1
이미 글꼴을 설치했지만 승인 된 라이센스가없는 상황에 대한 답입니다. 첫 번째 자동 설치를 올바르게 수행하려는 경우 수행 할 단계는 다음과 같습니다. sudo echo ttf-mscorefonts-installer msttcorefonts / accepted-mscorefonts-eula select true | debconf-set-selections && apt-get install -y -q ttf-mscorefonts-installer
Aleksander Lech

35

JasperReports 는 보고서 템플릿 내에서 사용 된 글꼴을 시스템 글꼴 또는 JR 글꼴 확장에서 오는 글꼴로 JVM에서 사용할 수없는 경우 JRFontNotFoundException 을 발생시킵니다. 이를 통해 글꼴 메트릭 불일치로 인한 모든 문제를 방지하고 불일치에 대한 조기 경고를받습니다.

Jasper 보고서는 또는에 정의 된 글꼴을 찾을 수 없기 때문에 보고서를 올바르게 내보낼 수 없다고 명시하여 보고서 개발 을 돕고 있습니다 .TextFieldStaticText

<font fontName="Arial"/>

예, net.sf.jasperreports.awt.ignore.missing.font 를 true 로 설정 하여 이를 비활성화 할 수 있지만 내보내기 불일치가 발생 합니다.

예 , JVM 시스템 글꼴로 글꼴을 설치할 수 있습니다 (하지만 보고서를 생성 할 수있는 모든 PC에서 설치해야하며 인코딩 문제 가있을 수 있습니다 ).

올바른 방법!

글꼴 확장 사용 ! (아래 링크 참조) 자신을 만들려면 경우, 재 스퍼 보고서는 또한 기본 글꼴 확장 항아리 (배포 jasperreports-fonts-x.x.x.jar)이 지원하는 글꼴 이름 DejaVu Sans, DejaVu SerifDejaVu Sans Mono

<font fontName="DejaVu Sans"/>

JasperReport Ultimate 가이드에서 :

보고서가 런타임에 실행될 때 응용 프로그램에서 글꼴을 사용할 수 있도록하는 유일한 방법이므로 글꼴 확장에서 파생 된 글꼴 만 사용하는 것이 좋습니다. 시스템 글꼴을 사용하면 해당 글꼴이 설치되지 않은 새 시스템에 배포 할 때 보고서가 제대로 작동하지 않을 위험이 항상 발생합니다.

PDF에서 글꼴을 올바르게 렌더링하는 방법에 대한 StackOverflow의 링크

PDF에서 글꼴을 올바르게 렌더링하는 방법에 대한 체크리스트

JasperSoft Studio로 글꼴 확장 생성

iReport로 글꼴 확장 생성


Jasper와 JVM이 시스템에있는 글꼴 (C : \ windows \ fonts에 있음)로 PDF를 렌더링 할 수없는 이유를 말씀해 주시겠습니까? 대신 Jar 글꼴 확장을 만들어 라이브러리로 추가해야합니다. 프로젝트의 클래스 경로 (Java와 Eclipse를 사용하고 있습니다). 나는 대답을 위해 구글을 시도했지만 이해할 수있는 설명을 찾지 못했습니다. (글꼴이 제대로 렌더링 할 필요없이 글꼴 확장하지만 몇 가지 추가 구성을 글꼴 메트릭 파일을 작성했고 한) 또한 나는이 수출-PDF-글꼴 문제 아파치 FOP 너무 참조
EagerToLearn

1
@EagerToLearn은 모두 pdf를 생성하는 itext 라이브러리로 내려갑니다. 글꼴을 올바르게 렌더링하려면 글꼴 확장이 필요합니다 (글꼴이 포함되어있을뿐만 아니라 ecc가 지정된 경우 인코딩도 포함됨). 이것을 제공하지 않으면 itext는 글꼴을 렌더링하기 위해 "최선의 노력"이라고 부르는 작업을 수행합니다. 당신은 우리가 필요로하는 일을하고 있지 않습니다 (문서로 작성 됨). 최선을 다해 보겠습니다.하지만 잘못은 당신 것입니다. 따라서이 질문에 대한 대답은 정확하지 않습니다 !, 글꼴 확장이 필요합니다. 제공하지 않으면 생성 된 모든 항목과 함께 살아야합니다.
Petter Friberg

답변 주셔서 감사합니다.하지만 여전히 글꼴 문제가 iText 라이브러리 작동 방식과 관련이 있다는 것을 알 수 있습니다. 이 글꼴이 내 기술적 인 이해 능력을 훨씬 뛰어 넘는
것일

@eag 이해해야 할 것이 많지 않습니다. 글꼴을 렌더링하려면 .ttf가 어디에 있는지 알아야하고 텍스트 인코딩이 무엇인지 알아야합니다. 이 정보를 알고있는 lib의 개발자는 글꼴 확장을 만들었습니다. 제공하지 않으면 추측을 시작할 필요가 있습니다. 어떤 경우에는 작동하지 않는 이유는 "추측"이 올바르지 않기 때문입니다.하지만 lib를 비난 할 수는 없습니다. 이 그들이 시스템을 제공 한 이후로는 "추측"피하기 위해
페터 프리 버그에게

22

IReport를 사용하여 글꼴을 설치합니다.

도구-> 옵션-> 글꼴-> 글꼴 설치 클릭

그런 다음 글꼴을 선택하고

-> 확장자로 내보내기 및 이름 myfont.jar 입력

이 jar와 spring.jar * 를 빌드 경로에 추가하십시오.

* Jaspersoft \ iReport-3.7.0 \ ireport \ modules \ ext에서 spring.jar 복사


1
완료를 위해 arial ttf는 c : / windows / fonts (적어도 win xp) : arial.ttf, arialbd.ttf (bold), ariali.ttf (italic), arialbi (bold-italic)
jneira

빌드 경로에 spring.jar을 추가하면 문제가 해결되었습니다.
fishjd

이 방법은 실제로 저에게 효과적이었습니다. 글꼴을 jar 파일로 패키징하고 클래스 경로에 추가하고 Just Work를 사용합니다.
Satya

글꼴 확장이 올바르게 작성되면 spring.jar을 추가 할 필요가 없습니다.
Petter Friberg

이 도구-> 옵션-> 글꼴-> 클릭 설치는 Mac에서 사용할 수 없습니다. :( 어떤 제안?
L-Samuels

14

sudo apt-get install msttcorefonts (우분투 개발 환경에서) 작동하지만 그다지 좋은 솔루션은 아닙니다.

대신 이 팁을 기반으로 애플리케이션과 함께 글꼴을 번들로 제공했습니다 . JAR 파일에는 다음 글꼴이 번들로 제공됩니다.

  • 굴림
  • 타임즈 뉴로 만
  • 택배 신규
  • Comic Sans MS
  • 그루지야
  • Verdana
  • 고정 폭

jar 다운로드에 대한 직접 링크 : Maven 버전 1.0. DynamicFonts


이 이제 예를 들어, 표준 MVN 저장소에서 다운로드 할 수 있습니다 mvnrepository.com/artifact/ar.com.fdvs/DynamicJasper-core-fonts
마르쿠스 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 확장자가있는 "확장자로 내보내기"를 클릭하여이 글꼴을 내 보냅니다.

프로젝트 라이브러리 또는 클래스 경로에있는 Jasperreports-font.XXXjar에 대해이 jar를 사용할 수 있습니다.



3

프로젝트에서 maven을 사용하는 경우 pom.xml에 jasper-fonts 종속성을 추가하면됩니다.

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

시스템에 누락 된 글꼴을 설치하는 것이 작동하는 솔루션 일 수 있지만 저에게는 그렇지 않습니다. 새 서버에 배포 할 때마다 누락 된 글꼴을 설치할 필요가 없었고 대신 응용 프로그램에 글꼴을 포함하기로 선택했습니다.

문안 인사.


2

iReport를 통해 사용자 정의 글꼴을 만들고 jar 파일처럼 변환 할 수 있습니다.


2

줄을 추가해보세요

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

jasperreports.properties 파일에.

Jasper가 하나의 글꼴을 찾지 못함


1
그리고 나쁜 생각입니다 ... 불일치를 내보내십시오!
Petter Friberg

@PetterFriberg 아니요, 좋은 대체 메커니즘입니다. JVM을 항상 제어 할 수는 없습니다. 대체 메커니즘을 사용하는 것이 항상 좋은 생각입니다. 결과가 이상적이지 않더라도 고객 컴퓨터에서 글꼴이 누락되어 발생하는 응용 프로그램 충돌보다 낫습니다.
jwenting

@jwenting은 글꼴 확장을 추가하고 충돌하지 않습니다. 당신이 뭔가 잘못하고있는 것을 비활성화하는 경우 저를 믿으십시오. 대신 잘못된 보고서가 생성 될 것입니다. 대신 근본적인 문제 (글꼴 확장 누락)를 해결해야합니다. 그리고 예, 항상 JVM을 제어 할 수 있습니다.
Petter Friberg

@jwenting 참고 : 해결책은 서버에 글꼴을 설치하지 않는 것입니다 (수락 답변에 따르면 잘못되었습니다!). 해결책은 의존성 글꼴 확장을 생성하고 추가하는 것입니다. 정답을 보려면 this 참조 stackoverflow.com/a/35549391
Petter Friberg

종종 불가능한 @PetterFriberg. 예를 들어 내가 유지 관리하는 응용 프로그램은 서버에서 실행되지만 사용자가 표준으로 제공하는 것 이상으로 사용자 지정 보고서를 생성하기 위해 특정 명명 규칙을 사용하여 사용자 지정 .jrxml 파일을 추가 할 수 있습니다. .jrxml이 지정하는 글꼴을 서버에 사용할 수없는 경우 이러한 보고서가 중단되는 것을 원하지 않으므로 폴백을 사용합니다.
jwenting

2

글꼴을 설치하여 수행 할 수 있습니다. 즉, 특정 응용 프로그램을 실행하려는 모든 곳을 의미합니다. 가장 간단한 방법은이 bl 줄을 jrxml 파일에 추가하는 것입니다.

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

도움이 되었기를 바랍니다.


1
그러나 이로 인해 내보내기 불일치가 발생합니다 (따라서 jrxml에 표시된 글꼴로 렌더링 할 수 없음). 내 대답을 참조하십시오.
Petter Friberg

2

데비안의 경우

더하다

non-free contrib

/etc/apt/sources.list의 deb 및 deb-src에 :

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

Spring 3 기반의 웹 애플리케이션 문제에 직면했고 Oracle Linux 6의 Weblogic 10.3에 배포했습니다. 링크에 언급 된 솔루션 이 저에게 적합하지 않았습니다.

다음 단계를 수행해야했습니다.-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

1

다국어 재스퍼 보고서 작성 (유니 코드)

1) ireport desginer에 글꼴 설치

2) 글꼴 확장 생성 (응용 프로그램 클래스 경로에서 사용)

3) OS에 글꼴 설치 (선택 사항)

4) jre-> lib-> fonts 디렉토리에 모든 .ttf 글꼴을 붙여 넣습니다 (그렇지 않으면 웹 응용 프로그램에서 JVM에서 사용할 수없는 글꼴 오류가 발생 함).


0

사실이 문제를 아주 간단한 방법으로 해결했습니다.

  1. home path, 좋아요 로 이동/root
  2. 라는 폴더를 만듭니다. .fonts
  3. 당신의 복사 all your font files에를 .fonts, 당신은에서 글꼴을 복사 할 수 있습니다 C:\windows\fontsWindows를 사용하는 경우.
  4. sudo apt-get install fontconfig
  5. fc-cache –fv 글꼴 캐시를 다시 구입합니다.

0

2 단계 솔루션 (centOS를 사용하는 경우)

  1. Microsoft 핵심 글꼴 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
    


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.