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

munilive
Written by munilive on (Updated: )

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

한글 pdf 파일의 경우 한글이 깨져서 저장되는 경우가 있다 이럴 경우에는 한글 폰트를 추가 해주면 된다.

yum install baekmuk-ttf-*
roboot

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


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

Comments

comments powered by Disqus