본문 바로가기
text/Java

한글 파일(.hwpx) 에서 내용만 추출하고 싶을때

by hoonzii 2023. 1. 13.
반응형

java로 hwp는 hwplib를 통해서 읽는데, hwpx를 읽으려고 하니 오류가 난다.

단순히 안에 있는 텍스트 내용만 가져오면 되는데 안 되는 게 답답하던 차ㅡ

 

구글에서 찾아보니

[아주 쉬운 뉴스 Q&A] 아래아한글 새 기본문서 'hwpx'가 뭐죠? | 아주경제

 

[아주 쉬운 뉴스 Q&A] 아래아한글 새 기본문서 'hwpx'가 뭐죠? | 아주경제

얼마 전 국민 워드프로그램 아래아한글의 기본문서 형식이 바뀌었습니다. 최신 프로그램 업데이트를 적용하면, 한글 문서를 작성하고 저장할 때 기존 hwp가 아니라 hwpx라는 형식의 파일이 만들

www.ajunews.com

 

위 링크를 참고하면

hwpx는 zip format으로 확장자를 변경하면 폴더 내 계층구조로 내용이 적혀있다는 것이다.

zip으로 변경한 뒤, 해당 폴더 구조는 아래와 같고,

저 Preview 폴더 안에는

아래와 같이 해당 문서의 이미지와 text가 적혀있다.

내가 원하는 값은 text였기에 해당 부분을 가져오는 코드를 짰다.

public String readInput(String filePath) {
        StringBuilder stringBuilder = new StringBuilder();
        try {
            ZipFile zipFile = new ZipFile(filePath);

            Enumeration<? extends ZipEntry> entries = zipFile.entries();

            while(entries.hasMoreElements()){
                ZipEntry entry = entries.nextElement();
                if(entry.getName().contains("PrvText.txt")){
                    InputStream stream = zipFile.getInputStream(entry);
                    InputStreamReader inputStreamReader = new InputStreamReader(stream);
                    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

                    String line = "";
                    while((line = bufferedReader.readLine()) != null) {
                        stringBuilder.append(line+"\\n");
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return stringBuilder.toString();
    }

ZipFile 객체를 통해서 파일을 읽고

ZipEntry를 순회하면서 파일이름(entry.getName)에

PrvText.txt 가 포함되어 있으면 해당 파일을 읽어서 String으로 반환하게끔 구현했다.

반응형

'text > Java' 카테고리의 다른 글

매번 찾기 귀찮은 LocalDate 적어놓기  (0) 2023.02.24
antMatcher? 가 머지  (0) 2023.02.21
SpringBoot에서 JSP사용 시 설정  (0) 2022.11.10
java HashMap source code 살펴보기  (1) 2022.10.11
java ArrayList source code 살펴보기  (1) 2022.09.20

댓글