본문 바로가기
PROGRAM/JAVA / JSP

String에서 PDF로 변환하기 / STRING (or XSTRING) TO PDF

by ojava 2018. 12. 14.
반응형

사용자 편의와 업무 간소화를 위해서 문서 다운로드 작업을 많은 부분에서 제공하고 있다.

표 형태의 데이터나 많은 내용이 나오는 데이터는 엑셀로, 공식적인 문서형태의 경우나 변환되면 안되는 계약서의 경우 PDF로 제공한다.

이제 곧 연말정산 기간도 다가오고 하니 PDF 변환 및 다운로드 기능을 많이들 찾을 듯 하여 PDF와 관련된 포스팅을 하나 써보도록 한다.

 

오늘 포스팅 할 내용은 String 형태로 전달받은 파일 내용을 PDF로 변환하는 내용을 다룬다.

 

 

String에서 PDF로 변환하기 / STRING (or XSTRING) TO PDF

 

파일 입출력을 다루는 많은 예제에서 봐왔듯이 Input / Output Stream 등을 사용할 예정이다.

전체적인 구조를 우선 보자.

 

1. 변환하고자 하는 원본파일인 A.PDF 파일 위치 선언

2. InputStream으로 읽어들임

3. B.PDF 파일 신규 생성 (빈 파일)

4. OutputStream으로 B.PDF에 A.PDF의 내용 입력

5. B.PDF로 변환 완료

 

단, 이 포스팅에서는 원본 PDF 파일을 InputStream으로 가져오는 부분은 생략되어 있다.

PDF로 만들어진 파일을 Binary String 형태로 받아와서, 이를 다시 PDF로 변환하는 작업을 수행한다.

 

import org.apache.commons.codec.binary.Hex;

try {

String output = 타 플랫폼에서 전달받은 PDF 파일의 바이너리 데이터

String fileName = "파일 경로 및 파일명"; // 원하는 형태의 파일명으로 지정

File file = new File(fileName);

FileOutputStream fos = new FileOutputStream(file);

// case1. 전달받은 output 값이 일반 String 형태일 때

fos.write(output);

fos.close();

// case2. 전달받은 output 값이 XString[각주:1] 형태일 때

byte [] decodeXstring = Hex.decodeHex(output);

fos.write(decodeXstring);

fos.close();

}

 

String 형태의 데이터를 받을 때와 XString 형태의 데이터를 받을 때의 차이는 decode 여부이다.

Hex String을 String처럼 받아와서 파일 쓰기를 하면 파일은 생성되지만 인코딩이 깨졌다면서 열리지 않는다... ^_ㅠ

 

Hex 형태의 String으로 반환받는다고 할 때 알았을지도 모르지만 SAP과 연동되는 시스템에서 사용될 수 있는 예제다.

Hex.decodeHex 부분도 지금은 apache codec을 사용했지만 SAP JCO에서 제공하는 API도 있으니, import 되어 있는 JCO에서 Hex를 찾아보시길.

 

 

참고

https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/Hex.html

 

  1. XString은 Hex String이라고 한다. [본문으로]
반응형