한글 기안기 데이터를 한글 파일로 저장해야 해서 확인

 

한글 기안기에서 데이터 저장시 SetTextFile 호출 한다

 

호출시 옵션으로 format, option 을 설정하는데 format 에는 아래의 형식이 있다

 

format

설명

비고

HWP

HWP native format

BASE64 로 인코딩되어 있어야 한다. 저장된 내용을 다른 곳에서 보여줄 필요가 없다면 이 포맷을 사용하기를 권장합니다.ver:0x0505010B

HWPML2X

HWP 형식과 호환

문서의 모든 정보를 유지

HTML

인터넷 문서 HTML 형식

글 고유의 서식은 손실된다.

UNICODE

유니코드 텍스트

서식정보가 없는 텍스트만 저장

TEXT

일반 텍스트

유니코드에만 있는 정보(한자, 고어, 특수문자 등)는 모두 손실된다.

그중 HWPML2X 의 경우 모든 정보를 유지 하기 때문에 해당 데이터를 그대로 .hwp 파일로 저장하게 되면 한글파일이 그대로 추출 된다.

 

하지만 이전 프로젝트에서는 HWP 형식으로 저장했기 때문에 BASE64 디코딩 하여 파일 저장하도록 진행하였다

 

디코딩할때 java.util 에 있는 base64 로 디코딩 했을때는 Illegal base64 character d 에러 가 발생

 

검색 하다가 apache 가 어쩌구 저쩌구 하는 글을 발견하고 혹시나 싶어서

 

apache base64 로 디코딩 했을시 디코딩 성공!

 

그런데 디코딩된 byte 배열을 출력 해보려니까 계속 글자가 깨짐..

 

변환할때 뭘 잘못했나 싶어서 계속 삽질중 걍 파일을 만들어 보자 싶어서

 

 fileinputstream 으로 byte 배열을 그대로 만들어보니 성공.!

 

진작 해볼껄..

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
String data = EgovStringUtil.nullConvert(map.get("docCnts")); //기안기 데이터 가져오기
String docTitle = EgovStringUtil.nullConvert(map.get("docTitle")); //제목
byte[] decodeData = Base64.decode(data.getBytes()); //디코딩
 
String path = "D:/dev/test"; //첨부파일 경로
String fileName = cnt + ". " + docTitle + ".hwp"; //파일명이 중복될수 있어서 앞에 숫자. 붙임
 
File saveFolder = new File(path); //파일 생성
//경로가 없을경우 경로 생성
}    
                
String fullPath = path + "/" + fileName;
 
//파일 생성
File lOutFile = new File(fullPath);
FileOutputStream lFileOutputStream = new FileOutputStream(lOutFile);
lFileOutputStream.close();
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
 

 

 

+ Recent posts