글쓰기 메뉴

우분투 14.04 wkhtmltopdf 설치

wkhtmltopdf 는 HTML 페이지를 PDF 로 만들어주는 오픈소스 도구로 Qt WebKit 엔진을 사용한다. 자매품인 wkhtmltoimage 는 같은 방식으로 HTML 을 다양한 형식의 이미지로 변환시켜준다.


Ubuntu 14.04 에서 apt-get 으로 wkhtmltopdf 패키지를 설치할 수 있으나 Qt 가 wkhtmltopdf 에 맟춰 패치되지 않았다면 몇 가지 기능이 제한된다. 예를 들면 HTML 에 있는 링크가 PDF 에 사라지는 등의 오류가 있을 수 있다. 관련 옵션은 --enable-external-link 인데 Qt 가 패치되어 있지 않으면 해당 옵션을 켤 수 없다. 


그러니 wkhtmltopdf 홈페이지에서 컴파일되어 있는 바이너리를 다운받아 설치하도록 하자. 만사가 편하다.


* 우분투 서버를 사용하고 있을 경우 X 시스템과 폰트관련 패키지가 설치되어 있지 않다. 이럴 경우 먼저 필요한 패키지와 폰트를 설치하자.


$ sudo apt-get install libfontenc1 libxfont1 xfonts-encodings xfonts-utils xfonts-base xfonts-75dpi


폰트는 마음에 드는 패키지를 찾아 설치하면 되는데 별도의 설정없이 바로 사용할 수 있는 한글 폰트는 unfonts, baekmuk, nanum 정도 되겠다. 각각 패키지는 아래와 같다. (우분투위키에서 CJK 폰트 참고)


은폰트 - unfonts

$ apt-get install fonts-unfonts-core fonts-unfonts-extra 


백묵폰트 - baekmuk

$ apt-get install fonts-baekmuk


나눔폰트 - nanum

$ apt-get install fonts-nanum fonts-nanum-coding fonts-nanum-extra


폰트툴과 폰트가 설치 된 후 wkhtmltopdf 다운로드 페이지에서 Ubuntu Trusty (14.04.1) 버전(64-bit)의 .deb 파일을 다운받아 아래와 같이 설치한다. 


$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
$ sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb


설치 후 아래와 같이 확인할 수 있다.

$ wkhtmltopdf --version
wkhtmltopdf 0.12.2.1 (with patched qt)


webpage/url 이라는 주소의 웹페이지를 save.pdf 로 변환하는 명령어 예제는 다음과 같다. 자세한 옵션은 man wkhtmltopdf 로 확인할 수 있다.


$ wkhtmltopdf --print-media-type --page-size A4 --dpi 300 -T 10mm -B 10mm -L 10mm -R 10mm http://webpage/url save.pdf


--print-media-type

스크린 타입이 아니라 프린트 미디어로 PDF를 렌더한다.


--page-size

페이지 사이즈를 지정한다. Letter, A4, A3 등의 형식으로 지정할 수 있다.

* 공식 홈페이지에서 전체 리스트 링크를 제공하고 있으나 현재 사용이 연결이 되지 않는다. 소스에서 확인한 전체 리스트는 이 곳에 적어둔다.

* --page-width, --page-height 로 페이지 크기를 지정할 수 있다 


--dpi

dpi (dots per inch) 값을 지정한다.


-T, -B, -L, -R

상(Top), 하(Bottom), 좌(Left), 우(Right) 여백을 지정한다.





요즘 웹페이지의 PDF 변환이나 이미지 캡처는 요즘 PhantomJS 를 사용한 방식이 훨씬 많이 소개되고 있다. 의존패키지에 대한 고려나 설정에 대한 부담감이 없기 때문일텐데 개인적으로 wkhtmlto* 를 오래전부터 사용하고 있어서 정리해봤다.

어디서 왔지?
[["www.google.fr", 1], ["www.google.co.kr", 686], ["translate.googleusercontent.com", 3], ["duckduckgo.com", 2], ["synd.kr", 26], ["yandex.ru", 5], ["www.google.co.th", 3], ["www.google.co.uk", 4], ["www.google.co.jp", 7], ["search.daum.net", 3], ["www.naver.com", 1], ["www.google.com", 22], ["www.google.com.ph", 1], ["unknown", 2700], ["alittlemore.tistory.com", 19], ["www.bing.com", 2], ["www.google.co.nz", 1], ["www.google.com.hk", 1], ["www.google.es", 1], ["www.google.com.tw", 1], ["www.google.ca", 2]]