LibreOffice 이용하여 pdf, ppt to image Converter 만들기
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{:target=“_black”}
- unoconv 소스코드: http://dag.wiee.rs/home-made/unoconv/{:target=“_black”}
- Github 자료: https://github.com/dagwieers/unoconv{:target=“_black”}
- XServer 사용하지 않고 콘솔에서만 작동: https://wiki.documentfoundation.org/Development/HeadlessBuild{:target=“_black”}
- Shell 스크립트 관련: http://tech.rgou.net/en/php/converting-documents-odt-doc-to-pdf-on-php-with-unoconv-libreoffice/{:target=“_black”}
- unoconv man page: http://linux.die.net/man/1/unoconv{:target=“_black”}
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스 에 따라 이용할 수 있습니다.
Comments
Related Posts
ubuntu에서 cron이 정상 작동하지 않을 경우
우분투에서 crontab 으로 shell script 를 등록하였는데 정상작동 하지 않아 그 원인을 찾기 위해 알아본 방법을 정리 한다. 우분투에서는 폴더에 cron 로그가 생기…
내가 사용하고 있는 Gnome Shell extensions
현재 내가 사용하고 있는 Gnome Shell Extensions 이다. Ubuntu 14.04 Gnome LTS 사용중이고 기본 Extensions 과 내가 추가로 설치해서…
Gnome Shell extensions – Touchpad Indicator
그놈쉘의 확장 기능 중 하나인 Touchpad Indicator! 이게 무엇이냐 하면 상단 바에 터치패드가 켜져 있는지 꺼져 있는지 아이콘으로 알려주는 기능이다. 해당 아이콘을…