January 25, 2019
회사에서 진행하는 프로젝트에서 Hwp -> Image를 만드는 과정을 진행하며 찾게된 툴이다.
WKHtmlToPdf는 Html을 Pdf로 변환해주는 툴이다.
이번 포스팅에서는 이것을 AMI에 설치하고, 사용하는 방법을 소개한다.
일단 진행하는 환경은 Amazon의 AMI에서 진행하였다. (CentOS-6 64bit)
다른 OS환경은 공식 홈페이지를 참고하도록 하자.
설치 전 필요한 의존성을 설치해준다. (명령어는 가급적 Control C + Control V 조합으로..)
> yum -y install fontconfig libXrender libXext xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi freetype libpng zlib libjpeg-turbo openssl icu
그리고 wget으로 다운을 받는다.
> wget https://downloads.wkhtmltopdf.org/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz --dns-timeout=5 --connect-timeout=5 tar -xJf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
bin으로 이동 처리를 해준다.
> cp wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
> cp wkhtmltox/bin/wkhtmltoimage /usr/local/bin/wkhtmltoimage
특별히 환경변수를 안잡아도 터미널에서 아래와 같이 명령어를 수행하면 실행이 될 것이다.
> wkhtmltopdf
이를 통해서 아래와 같이 URL에서 정보를 가져와서 변환할 수 있다.
> wkhtmltopdf http://www.naver.com ./naver.pdf
또는 자신의 로컬 경로에 저장된 html도 변환이 가능하다.
> wkhtmltopdf ~/sample/index.xhtml ./index.pdf
xhtml 또한 잘 변환된다.
Wkhtmltopdf를 Java에서 호출할 수 있는 것이 있다.
이곳을 참고하였다.
물론 WKHtmltopdf가 시스템에 설치되어 있어야 한다.
먼저 gradle에서 저장소와 의존성을 추가한다.
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
dependencies {
compile 'com.github.jhonnymertz:java-wkhtmltopdf-wrapper:1.1.5-RELEASE'
}
위와 같이 추가 후 자바단에서는 아래와 같이 호출을 하여 사용한다.
//객체 생성
Pdf pdf = new Pdf();
pdf.addPageFromUrl(inputHtmlPath);
try { pdf.saveAs(outputPath); } //Html을 pdf로 변환 처리하는 로직
catch (IOException e) { throw new Xhtml2PdfChangeException(this, "Change fail xhtml to pdf. IOException message = " + e.getMessage()); }
catch (InterruptedException e) { throw new Xhtml2PdfChangeException(this, "Change fail xhtml to pdf. InterruptedException message = " + e.getMessage()); }
return outputPath;
저기에서 inputHtmlPath는 html이 존재하는 경로 String 객체이며,
save에는 결과물(pdf)이 저장될 경로 String 객체를 전달하면 된다.
예외 처리의 경우 자신의 환경에 맞게끔 알맞게 설정해주면 된다.
변환한 PDF의 한글 내용이 깨지는 경우가 있다.
이는 시스템에 폰트가 없어서 발생하는 문제이다.
폰트만 설치하면 깔끔하게 처리된다.
아래는 나눔폰트를 설치하여 적용하는 예시이다.
> wget http://static.campaign.naver.com/0/hangeul/renew/download/NanumFont_TTF.zip
> unzip Nanum*.zip
> mkdir /usr/share/fonts/nanumfont
> mv *.ttf /usr/share/fonts/nanumfont
아래 사이트들에서 참고하였다.