LibreOffice 이용하여 pdf, ppt to image Converter 만들기

PDF, PPT 파일을 PNG나 JPEG 파일로 얻기 위하여 컨버팅 프로그램을 찾는 도중 unoconv 를 통하여 뽑아 낼 수 있는 것을 알아 내고 Github에 나와 있는 문서를 제대로 읽지도 않고 바로 삽질을 한 결과 겨우 성공하여 세팅 방법을 정리 해본다.

OS는 CentOS 7 버전을 이용하였다.

먼저 unoconv 를 사용하기 위해서는 LibreOffice 나 OpenOffice 가 필요 하다. 4.1 이상 버전을 사용하여야 x server 없이 콘솔에서만 컨버팅이 가능 하게 할 수 있다.

1. LibreOffice 를 yum 으로 설치
# yum install libreoffice

2. unoconv 를 yum 으로 설치
# yum install unconv

3. 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)

여기 까지 하면 콘솔창에서 바로 컨버팅이 가능하다.

# 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

위 내용을 정리 하기 위하여 무수히 많은 사이트를 검색해서 확인 하였지만 그중에 결정적 도움이 되었던 사이트만 아래 링크 한다.

참고 사이트
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

한글 pdf 파일의 경우 한글이 깨져서 저장되는 경우가 있다 이럴 경우에는 한글 폰트를 추가 해주면 된다.
# yum install baekmuk-ttf-*
# roboot

한글 폰트 설치후 반드시 reboot 하여서 폰트를 적용시켜야 한다.

CC BY-NC-SA 4.0 This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.