개인 프로젝트를 진행하던중 DB에 저장된 게시물 본문 데이터를 수정시
마크다운 포맷으로 화면에 뿌려야하는 경우가 생겼다.
DB에는 게시물 본문 데이터가 태그가 포함된 HTML 형태로 저장이 되어 있는데, 이것을 서버에서 변환하여 화면으로 전달해주는 형태로 하고 싶었다.
분명 라이브러리가 존재할 것이라고 생각했다.
구글링 하다보니 이런 경우 쓸 수 있는 라이브러리가 몇개 존재했다.
그 중 나는 Flexmark라는 라이브러리를 사용하기로 하였다.
implementation 'com.vladsch.flexmark:flexmark-all:0.64.8'
위와 같은 의존성을 추가하였다.
사용방법은 생각보다 간단하였다.
flexmark Github에 다양한 사용법 예시가 있다. 나는 Java로 개발하고 있기 때문에 Java Sample을 참고하였다.
먼저 내 프로젝트에서 게시물을 조회하는 메서드를 준비하고 Html을 md로 변환하는 메서드를 따로 분리하여 호출하였다.
@PostMapping("/post/checkdata")
@ResponseBody
public Map<String, Object> checkData(@RequestBody Map<String, Object> param) {
Map<String, Object> response = new HashMap<>();
PostDTO postDTO = postService.findByPostNo((Integer) param.get("postId"));
String parsingContents = convertHtmlToMarkdown(postDTO.getPostBody());
log.info(parsingContents);
response.put("checkData", parsingContents);
response.put("postTitle", postDTO.getPostTitle());
response.put("postTag", postDTO.getPostTag());
response.put("postNo", postDTO.getPostNo());
return response;
}
/**
* HTML -> MD paser
* @param htmlData
* @return MDData
*/
private String convertHtmlToMarkdown(String htmlData) {
String markdown = FlexmarkHtmlConverter.builder().build().convert(htmlData);
return markdown;
}
위와 같이 조회된 데이터를 Flexmark를 이용하면 쉽게 md 포맷으로 변환할 수 있다.