Recent Posts
Recent Comments
Adsense
Archives
Visitor
Today
Total
관리 메뉴

Annotation

JFreeChart 한글깨짐 문제 해결 본문

Java

JFreeChart 한글깨짐 문제 해결

devs 2015. 1. 28. 21:26


2틀남았습니다..

15년이 오기까지 :(

14년은 너무 빨리 지나갔습니다. 바빠서였는지..

세월의 직격탄을 맞고 눈에는 주름이 점점더.. :D

어찌되었든....

제가 진행중인 프로젝트에서 다음과 같은 요구사항이 있었습니다.


  icon-quote-left  이것저것과 언제를 선택하면 PDF로 테이블이랑 차트를 보여주시면 되요.


우선 PDF에서 사용할 차트 라이브러리는 JFreeChart (Java)를 사용하였습니다.

(혹시라도 필요하신분을 위해 의존성을 추가합니다.)


<dependency>
	<groupId>org.jfree</groupId>
	<artifactId>jfreechart</artifactId>
	<version>1.0.14</version>
</dependency>


그리고 각종 함수와 기본 사용법을 검색하려고 구글에 JFreeChart를 검색해보니.

연관검색어에 바로 "jfreechart 한글" 이 있었습니다.

그때부터 한글깨짐에 대한 느낌이 강하게 왔습니다.

역시나 바로 한글을 사용할 수 없었습니다.

그래서 오늘의 포스팅 주제는 다음과 같습니다.


JFreeChart 한글 깨짐문제 해결


우선 구글링을 통해서 얻을 수 있는 방안은 여러가지 있습니다.

1. JRE에 한글폰트 설치

2. Jar 수정

3. 직접 폰트 설정

그나마 3번이 가장 쉽게 가능합니다.

무엇보다 이 글을 보시는 분들은 개발자 분들이니, 소스에서 직접 해결하고 싶으실거라 믿고 설명하겠습니다.


1. JFreeChart 폰트 설정


우리는 차트를 그릴때 여러가지 설정을 하게 됩니다.

DefaultCategoryDataset 클래스로 데이터를 설정하고,

JFreeChart 클래스와 ChartFactory 클래스로 실제 차트를 생성하며,

CategoryPlot 클래스로 라벨과 색상 등을 설정합니다.

이때 저희가 해야 할 것은 이부분입니다.


CategoryPlot p = chart.getCategoryPlot();
// 차트의 배경색 설정입니다.
p.setBackgroundPaint(Color.white);
// 차트의 배경 라인 색상입니다.
p.setRangeGridlinePaint(Color.gray);
// X 축의 라벨 설정입니다. (보조 타이틀)
p.getDomainAxis().setLabelFont(new Font("나눔바른고딕", Font.BOLD, 13));
// X 축의 도메인 설정입니다.
p.getDomainAxis().setTickLabelFont(new Font("나눔바른고딕", Font.BOLD, 8));
// Y 축의 라벨 설정입니다. (보조 타이틀)
p.getRangeAxis().setLabelFont(new Font("나눔바른고딕", Font.BOLD, 8));
// Y 축의 도메인 설정입니다.
p.getRangeAxis().setTickLabelFont(new Font("나눔바른고딕", Font.BOLD, 8));


 별거 없습니다.

여기서 가장 중요한 핵심은 Font 클래스 부분입니다.

보시면 아시겠지만, 저는 예시로 "나눔바른고딕" 폰트를 사용하였는데요.

저 부분을 원하는 폰트로 바꿔주시면 되겠습니다.

그치만, 저렇게 폰트를 사용하시려면 시스템에 설치되있어야 되겠죠?

나눔바른고딕 폰트가 설치되어있지 않는데 사용한다고 선언하면 한글이 꺠지는건 당연한거니까요 :)

안이뻐도 되고, 귀찮으면 돋음 쓰세요 돋음..

그럼 폰트 설치 않하셔두 됩니다....

저는 이번 프로젝트에서는 나눔바른고딕을 사용하기때문에, PDF, JFreeChart 또한 모두 동일 폰트로 설정하였습니다.

따라서 시스템 기본폰트(돋음, 굴림 등)를 사용하지않는 이상은, 개발완료 후 실운영서버에 셋팅할때 폰트도 설치하셔야 합니다.

잊지마시고 꼭 설치하시길 바라겠습니다.

그래서 저는 유틸 폴더에 따로 넣어서 개발하고있습니다.

혹시라도 셋팅시 까먹으면 바로 설치 가능하게 끔이죠 :)

14년 마무리 잘 하시구요.

이글을 읽으신 분에게 꼭 도움이 되는 글이었으면 좋겠습니다.

여기까지 읽어주셔서 감사합니다. :)



Comments