본문 바로가기

오픈소스 가이드

[JasperReports] #2 한글폰트 설정

pdf 로 한글을 출력하려면 한글폰트를 pdf 에 embed 해야한다.

Jasper studio 에서 미리보기 할 때는 한글이 잘 나오지만(아마 os에 설치된 폰트를 가져오는 듯) pdf 로 출력해보면 한글이 출력되지 않는다.

Jasper studio 에서 템플릿 개발할 때 폰트를 설정하는 방법과 spring 에서 폰트 설정 하는 방법을 알아본다.

jasper studio 한글폰트 설정

1. Jaspersoft Studio - preferences - fonts - add

 

2. 다음과 같이 입력

Family Name : 나눔고딕

TrueType : 로컬경로/NanumGothic.ttf

PDF Encoding : Identity-H

Check Embed this font in PDF document

 

3. element 의 font property 를 나눔고딕으로 선택

 

Spring 에서 폰트설정

Jasper 템플릿에서 사용한 font name 과 동일한 이름의 font가 있어야 한다,

 

1. Jasper studio 에서 font.jar 를 export 하고 스프링에 외부 라이브러리로 추가하는 방법

Jaspersoft Studio - preferences - fonts - 폰트 선택 후 export

 

2. 폰트파일과 설정파일을 직접 생성

  • jasperreports_extension.properties 을 리소스폴더에 추가
  • fonts.xml
    • 폰트 메타데이터를 저장하는 xml 파일 추가 (경로는 jasperreports_extension.properties 에 넣는다.)
  • ttf 파일

(사실 1번의 jar 파일을 풀어보면 동일한 파일들이 존재함)

 

resource/jasperreports_extension.properties 

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.korean=프로젝트 안의 fonts.xml 경로

프로젝트 내의 경로/fonts.xml

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
	<fontFamily name="폰트이름(jasper에서 선택한 폰트이름과 동일)">
	    <normal>"프로젝트 안의 폰트경로"</normal>
	    <pdfEncoding>Identity-H</pdfEncoding>
	    <pdfEmbedded>true</pdfEmbedded>
	</fontFamily>
</fontFamilies>