LibreOffice 이용하여 pdf, ppt to image Converter 만들기
Written by munilive on (Updated: )PDF, PPT 파일을 PNG나 JPEG 파일로 얻기 위하여 컨버팅 프로그램을 찾는 도중 unoconv
를 통하여 뽑아낼 수 있는 것을 알아내고 Github에 나와 있는 문서를 제대로 읽지도 않고 바로 삽질을 한 결과 겨우 성공하여 세팅 방법을 정리해본다.
OS는 CentOS 7 버전을 이용하였다.
먼저 unoconv
를 사용하기 위해서는 LibreOffice 나 OpenOffice 가 필요하다. 4.1 이상 버전을 사용하여야 x server
없이 콘솔에서만 컨버팅이 가능하게 할 수 있다.
LibreOffice 를 yum 으로 설치
yum install libreoffice
unoconv 를 yum 으로 설치
yum install unconv
libreoffice-headless를 yum 으로 설치
yum install libreoffice-headless
- 이놈 설치가 중요하다 LibreOffice 패키지 설치하면서 같이 설치된 줄 알고 무시했다가 엄한대서 삽질하고 있었다.
참고로 설치하지 않고 실행하면 아래와 같은 에러를 볼 수 있다.
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display: Set DISPLAY environment variable, use -display option or check permissions of your X-Server (See "man X" resp. "man xhost" for details)
- 이놈 설치가 중요하다 LibreOffice 패키지 설치하면서 같이 설치된 줄 알고 무시했다가 엄한대서 삽질하고 있었다.
여기 까지 하면 콘솔창에서 바로 컨버팅이 가능하다.
unoconv –listener &
unoconv -f png test1.pptx
이렇게 입력 하면 결과물이 나온다.
추가 적으로 서버가 실행되면 바로 unoconv –listener & 를 실행해서 바로 사용가능 하도록 하기 위한 스크립트를 추가 한다.
/etc/init.d/
폴더에 unoconvd
파일을 생성하고 아래 코드를 입력한다.
### BEGIN INIT INFO
# Provides: unoconvd
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 2 3 5
# Default-Stop:
# Description: unoconvd – Converting documents to PDF by unoconv
### END INIT INFO
MYPID=$(pidof /usr/lib64/libreoffice/program/soffice.bin)
case "$1" in
status)
if [ `ps ax | grep "/usr/lib64/libreoffice/program/soffice.bin" | grep "port=2002" | wc -l` -gt 0 ]; then
echo "Unoconv listener active. pid=$MYPID"
else
echo "Unoconv listener inactive"
fi
;;
start)
if [ `ps ax | grep "/usr/lib64/libreoffice/program/soffice.bin" | grep "port=2002" | wc -l` -gt 0 ]; then
echo "Unoconv listener already started."
else
/usr/bin/unoconv --listener &
echo "Unoconv listener started. pid=$MYPID"
fi
;;
stop)
killall soffice.bin
;;
restart)
killall soffice.bin
sleep 1
/usr/bin/unoconv --listener &
sleep 1
MYPID=$(pidof /usr/lib64/libreoffice/program/soffice.bin)
echo "Unoconv listener re-started. pid=$MYPID"
;;
esac
생성된 파일의 실행 권한 및 소유주를 변경한다. (만들때 root 로 만들었으면 chown 은 안해도됨)
chmod 755 /etc/init.d/unoconvd
chown root.root /etc/init.d/unoconvd
서비스로 등록은 아래 실행
chkconfig –add /etc/init.d/unoconvd
한글 pdf 파일의 경우 한글이 깨져서 저장되는 경우가 있다 이럴 경우에는 한글 폰트를 추가 해주면 된다.
yum install baekmuk-ttf-*
roboot
한글 폰트 설치후 반드시 reboot 하여서 폰트를 적용시켜야 한다.
위 내용을 정리 하기 위하여 무수히 많은 사이트를 검색해서 확인 하였지만 그중에 결정적 도움이 되었던 사이트만 아래 링크 한다.
- 참고 사이트
- Node.js 로 사용 가능: https://github.com/gfloyd/node-unoconv
- unoconv 소스코드: http://dag.wiee.rs/home-made/unoconv/
- Github 자료: https://github.com/dagwieers/unoconv
- XServer 사용하지 않고 콘솔에서만 작동: https://wiki.documentfoundation.org/Development/HeadlessBuild
- Shell 스크립트 관련: http://tech.rgou.net/en/php/converting-documents-odt-doc-to-pdf-on-php-with-unoconv-libreoffice/
- unoconv man page: http://linux.die.net/man/1/unoconv