프로그래밍 정리/API

JODConverter - JAVA에서 OpenOffice로 엑셀(excel)을 PDF로 변환하기

Wooni0477 2020. 3. 24. 11:08
반응형

JODConverter - JAVA에서 OpenOffice로 엑셀(excel)을 PDF로 변환하기

 

 

  • 구성환경

-JAVA 1.8

-JODConverter 3.0 beta

-OpenOffice 3.3.0

-CentOS 6.7(64bit)

 
  • JODConverter 다운 사이트
 
 
  • OpenOffice 다운 사이트

http://www.openoffice.org/download/index.html

 

 

  • 리눅스(CentOS)버전 다운로드 방법

 

 

버전은 3.4.1 밖에 없지만, 아카이브를 들어가기위해 선택해준다.

 

 

 

 

영어 버전으로 들어가고

 

 

 

3.3.0/ 들어가서

 

 

 

 

tar.gz파일을 받아준다.

 

 

 

  • 리눅스(CentOS) OpenOffice 설치

※폴더구성

 

1. #tar -zxvf OOo_3.3.0_Linux_x86-64_install-rpm-wJRE_en-US.tar.gz

-압축을 풀어준다.

 

2. #cd RPMS

-압축푼 폴더에서 RPMS 폴더로 이동

 

3. #rpm -Uvh *.rpm

- rpm 설치

 

4. #cd desktop-integration

-압축푼 폴더에서 RPMS/desktop-integration 폴더로 이동

 

5. #rpm -Uvh openoffice.org3.3-redhat-menus-3.3-9556.noarch.rpm

-자신의 OS에 맞게 RPM을 설치 해준다.

(centOS -> redhat)

 

 

※리눅스(CentOS) 한글설정

#export LC_ALL="ko_KR.UTF-8"

또는

#export LANG="ko_KR.UTF-8"

 

두 명령어 입력 후 다음과 같이 나오면 설정 완료

#locale
LANG=ko_KR.UTF-8
LC_CTYPE="ko_KR.UTF-8"
LC_NUMERIC="ko_KR.UTF-8"
LC_TIME="ko_KR.UTF-8"
LC_COLLATE="ko_KR.UTF-8"
LC_MONETARY="ko_KR.UTF-8"
LC_MESSAGES="ko_KR.UTF-8"
LC_PAPER="ko_KR.UTF-8"
LC_NAME="ko_KR.UTF-8"
LC_ADDRESS="ko_KR.UTF-8"
LC_TELEPHONE="ko_KR.UTF-8"
LC_MEASUREMENT="ko_KR.UTF-8"
LC_IDENTIFICATION="ko_KR.UTF-8"
LC_ALL=ko_KR.UTF-8

 
만약 재부팅 후에도 설정이 지속될려면 .bash_profile 에 명령어를 넣어두면된다.
#vi .bash_profile
#export LC_ALL="ko_KR.UTF-8" 맨 끝줄에 넣어줌
#:wq 저장
 
 
  • OpenOffice 서비스 시작

//서비스 시작

#soffice -headless -accept="socket,host=localhost,port=8100;urp;" -nofirststartwizard&

 

//프로세스 확인

#ps -ef | grep openoffice

 

//실행중인 화면

※실행이 안된다면 RPMS/desktop-integration 폴더에서 rpm을 설치 했는지 다시 한번 확인

 

-2020.4.10 추가

설치된 경로를 참조하는지 굳이 서비스에 안올려도 동작이 된다.

 

-2020.4.13 추가

최근 새로 centos7 깔고 openoffice4.1.7 로 바꾸었더니 한글이 네모(깨지는) 증상이 나타났다.

 

-2020.4.24 추가

한글이 네모(깨지는) 증상이 나타난 이유를 알았다. 리눅스를 새로깔았더니 font(ttf파일)이 없었던것이다.(이런 실수를!!)

아래 폴더에 엑셀에서 사용한 폰트를 넣어주니 한글이 잘나왔다.

이쪽 경로로 넣어주면 된다 #cd /opt/openoffice4/share/fonts/truetype

 

-2020.06.17 추가

 실치후 실행이 안된다면 아래의 3개의 라이브러리를 설치 해보면 실행이 된다.

(라이브러리 확인방법 #ldd /opt/openoffice4/program/soffice.bin)

yum install libXrender.x86_64
yum install libXext.x86_64
yum install libXt.x86_64

 

 

  • 자바에서 테스트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.io.File;
 
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.document.DefaultDocumentFormatRegistry;
import org.artofsolving.jodconverter.document.DocumentFormatRegistry;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;
 
public class convert_test {
    public static void main(String[] args) {
        File inputFile = new File("/home/test/template.xlsx");    //실제 엑셀파일 위치
        File outputFile = new File("/home/test/template.pdf"); //저장할 PDF파일 위치
        DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
 
        configuration.setPortNumber(8100); //포트설정
        configuration.setOfficeHome(new File("/opt/openoffice.org3")); //OpenOffice 설치된 경로
 
        OfficeManager officeManager = configuration.buildOfficeManager();
        officeManager.start();
        DocumentFormatRegistry formatRegistry = new DefaultDocumentFormatRegistry();
        OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager, formatRegistry);
        
        try {
             converter.convert(inputFile, outputFile);
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            officeManager.stop();
        }
    }
}
cs

※윈도우에서 사용할때는

1. OpenOffice Windows 버전 설치

2. 소스에서 파일 경로와 OpenOffice 설치경로만 바꿔주면 된다.

3. 단, 경로설정은 /(슬래시)로 구분해야 인식이 되었다.

4. 만약 안될시, 포트를 2002로 바꾸면 되는경우도 있었다.

 

 

자료가 생각보다 많이없어서 정리해둔다.

피드백은 언제든지 환영입니다~!

 

 

 

 

 

 

반응형