jasper report를 이용하여 pdf를 만들고 있는데, 아무리 생각해도 이건 아니다 싶다. 별로 예쁘지도 않고, 값 넣는 것도 힘들고.
jspdf를 쓸 수 있을까 했는데, 이건 한글 처리에 문제가 있는 것 같다.
google service를 이용하는 방법은 어떨까? google docs 문서를 generate 하고 이것으로 pdf를 대신하는거지. 만들어진 도큐먼트를 pdf export 하면 되니까. 될까? … 하지만 이것 역시 귀찮아서 포기.
한참을 생각하다가 딱! phantomjs !
pdf 생성 요청에 대해 프로세스를 fork해야 한다는 점이 맘에 걸리지만 한 번 시도해보자.
$ sudo apt-get install phantomjs
$ phantomjs --version
[WARNING] phantomjs: cannot connect to X server.
1.4버전까지는 X server가 필요하단다. 1.5부터 pure headless라고. 할 수 없다. 직접 설치.
$ wget https://phantomjs.googlecode.com/files/phantomjs-1.9.0-linux-x86_64.tar.bz2
$ sudo tar xjf phantomjs-1.9.0-linux-x86_64.tar.bz2
$ sudo ln -s /your/phantomjs-install/bin/phantomjs /usr/bin/phantomjs
$ phantomjs -v
1.9.0
나는 A4 사이즈 pdf생성을 위해 examples의 rasterize.js 파일을 참고했다.
$ phantomjs rasterize.js http://naver.com naver.pdf A4
한글이 표시안되더라. 글꼴을 설치하자.
$ sudo apt-get install ttf-nanum ttf-nanum-extra
$ sudo apt-get install ttf-mscorefonts-installer
여전히 돋움 같은 글꼴은 안나온다. 이것도 설치해주면 나오겠지.
이상 설치 끝.
그 다음엔 이놈을 java web app에서 이용하려면 Process를 띄워야 하는데 이 주제는 다음 기회에…
update: 한글 문제 때문에 고생 좀 했다. 내가 pdf로 보여주려는 웹페이지는 나눔글꼴을 사용하고 있었는데, 이게 내 개발환경(맥)에서는 pdf에서 제대로 한글이 나온다. 하지만 우분투 서버에서는 나눔글꼴이 안나오고 다른 한글 글꼴이 선택되더라. 그래서 pdf페이지가 예쁘지 않고 … 그나마 다른 우분투 서버는 대체 한글 글꼴도 없으면 네모로 출력. 뭐가 문제일까 한참을 삽질 좀 했더니, 문제는 css에서 NanumGothic이나 ’Nanum Gothic’은 안먹고 ’나눔고딕’이라고 해야 한글이 제대로 나온다. 즉
body {
font-family: '나눔고딕' !important;
}
헐… phantomjs가 QT 기반인 것 같은데, 나는 QT를 잘 모를 뿐이고…