프로젝트를 하다보니 데이터에 대한 리포트 기능을 개발하게 되었다.
파이썬을 이용해서 PDF 파일로 출력해야했고 파이썬을 배운지 얼마 안되고 나서의 업무라 구글링으로 정보를 많이 찾았고 해당 내용을 정리하고자 한다.
몇날 며칠을 방법을 여러가지 찾으면서 내 개발환경에 적합한 모듈을 탐색하며 기능을 설계했다.
결론은 지금 포스팅 중인 wkhtmltopdf 라는 모듈이 지금 내 개발환경에서는 적합했고 개발도 어느정도 용이했다.
아래와 같이 설치 후, wkhtmltopdf 설치 경로를 꼭꼭 기억(메모)해두어야 호출할 수 있다.
1. wget으로 설치
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
2. tar파일 /usr/bin으로 이동
mv wkhtmltox-0.12.4_linux-generic-amd64.tar.xz /usr/bin/.
cd /usr/bin
3. tar파일 풀고 wkhtmltopdf copy
tar -xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
cp wkhtmltox/bin/wkhtmltopdf /usr/bin/
4. 동작확인 (Naver 사이트 화면을 PDF로 변환)
wkhtmltopdf "http://www.naver.com" newfile.pdf
PDFKit는 wkhtmltopdf 파일을 이용하여 실제 변환될 PDF 파일 페이지에 대한 세세한 size / 위아래 여백 / footer 정보 등을 세심히 편집할 수 있는 툴이라고만 알고 개발했다. (상세한 내용은 다시 검색을 하면서 공부해야할듯..)
pip3 install PDFKit
settings.py 에 wkhtmltopdf가 설치된 경로 추가
wkhtmltopdf = '/usr/bin/wkhtmltopdf'
settings.py 맨 아래(아무데나 상관없음) pdf_options 추가
+ 추후 실제 PDF파일 출력 시 필요한 정보
+ settings.py가 아닌 다른 파일에 추가해도 무방함
pdf_options = { 'page-size': 'A4', 'margin-top': '0.40in', 'margin-bottom': '0.60in', 'margin-right': '0in', 'margin-left': '0in', 'encoding': "UTF-8", 'footer-center': '[page]', 'custom-header': [ ('Accept-Encoding', 'gzip') ], 'cookie': [ ('cookie-name1', 'cookie-value1'), ('cookie-name2', 'cookie-value2'), ], "quiet": "", 'no-outline': None, }
다음 포스팅 에서는 실제 개발할때 사용되는 부분에 대해 정리하여 기록할 예정이다.