[SpringBoot] JSOUP 사용 (HWP to HTML, HTML to HWP)

EunCheol·2025년 3월 4일

SpringBoot

목록 보기
3/3

요구사항

사용자는 서식내용을 html으로 다운로드 받아 해당 웹페이지를 복사하여 hwp파일에 붙여넣어서 데이터를 수정하는것이다.
https://github.com/neolord0/hwplib hwplib를 활용하여 hwp파일을 불러와서 데이터를 넣어서 html형식으로 저장하면 될거같지만 표를 동적으로 넣어야하는 케이스가 있는데 생각보다 사용방법이 어렵기도하고 기간이 얼마 안남아 hwp서식내용을 html으로 변환하여 Jsoup을 이용하여 데이터를 추가하는것이 빠르다고 생각.

HWP to HTML

1. 한컴 DEVELOPER 홈페이지

https://developer.hancom.com/docsconverter-example
hwp > html뿐만아니라 다양한 파일 형식 변환을 지원한다.
모양이 이쁘게 나오는데 다만 변환한 HTMl을 복사하여 HWP파일에 컨트롤 + Alt + V 하면 제대로 안붙여짐.

2. cloudconvert

https://cloudconvert.com/hwp-to-html
원본과 스타일이 조금 다르긴하지만 HWP파일에 제대로 붙여진다. 요거 쓰기로함
변환한 서식 HTML소스는 스타일과 name, id 정의후에 DB에 저장.
DB에 저장할때 vsCode 확장에서 다운받은 Minify로 했으나 스타일이 많이 깨진다;
https://codebeautify.org/minify-html 여기서 수동으로 돌리니 안깨짐..

JSoup 적용

Jsoup은 Java 기반의 HTML 파싱 라이브러리로, 웹 페이지의 HTML을 가져와서 분석하고 조작할 수 있도록 도와줌.

  1. HTML 가져오기 (웹에서 또는 문자열로)
    URL에서 HTML을 가져올 수 있음
    HTML 문자열을 Document 객체로 변환 가능
  2. HTML 파싱 및 요소 선택
    CSS 선택자 (select()), 태그명, ID, 클래스명으로 요소 선택 가능
    selectFirst() 또는 first()를 사용해 첫 번째 요소 선택 가능
  3. HTML 요소 조작
    텍스트 변경 (text())
    속성 변경 (attr())
    요소 추가 및 삭제 (append(), remove())

pom.xml

			<dependency>
                <groupId>org.jsoup</groupId>
                <artifactId>jsoup</artifactId>
                <version>1.15.4</version>
            </dependency>

download.java

// 1. 템플릿 조회
TplVO tplVO = tplDAO.selectOneTpl(TplVO.builder().typeNm("tpl").build());
// 2. HTML 파일 읽기
String htmlContent = tplVO.getContents();
// 3. HTML 문자열을 Jsoup Document로 파싱
Document doc = Jsoup.parse(htmlContent);

변환된 html소스인 doc에 정의된 id나 name 호출해서 데이터를 동적으로 추가한다.

// (span) name=miNm 인것만 조회
Elements miNmElements = doc.select("span[name=miNm]");
	if(miNmElements.size() > 0){
    	for(int i = 0 ; i < miNmElements.size(); i++){
        	miNmElements.get(i).text(" "+miNm);
        }
     }

0개의 댓글