한글 기안기 데이터를 한글 파일로 저장해야 해서 확인
한글 기안기에서 데이터 저장시 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
|
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
|