SPRING

spring html내용으로 pdf 생성, html to pdf

규루리 2025. 3. 19. 11:09

spring html을 pdf로 생성

 

spring 또는 전자정부프레임워크(egovFramework)에서 html을 pdf로 만드는 방법에 대해 설명하겠습니다.

 

1. iText 의존성 추가

Maven을 사용하는 경우 pom.xml에 다음 의존성을 추가합니다

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.4</version>
</dependency>
<dependency>
    <groupId>com.itextpdf.tool</groupId>
    <artifactId>xmlworker</artifactId>
    <version>5.5.13.4</version>
</dependency>

 

 

2. Controller

html을 받아 pdf로 변경하는 컨트롤러를 생성합니다.  

public class HtmlToPdfConverter {

	@RequestMapping(value="/htmlToPdf.do")
    public void convertHtmlToPdf(@RequestParam("htmlContent") String htmlContent, HttpServletResponse response) throws IOException, DocumentException 
    {
        
        String decodedHTMLContent = StringEscapeUtils.unescapeHtml(htmlContent);
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition","attachment; filename=pdf.pdf");
        
        OutputStream out = response.getOutputStream();
        Document document = new Document(PageSize.A4);
        try{
        	PdfWriter writer = PdfWriter.getInstance(document, out);
        	document.open();
            XMLWorkerHelper.getInstance().parseXhtml(writer, document, new StringReader(decodedHTMLContent));
        } catch(Exception e){
        	e.printStackTrace();
        } finally {
        	document.close();
            out.close();
        }

    }
}

 

 

3. HTML 전송폼 만들기

pdf로 만들 html 전송 form을 생성합니다.  <html> <head> </head> <body> </body> </html>  필수로 넣어주세요.

<html>
	<head>
    	<meta charset="UTF-8"/>
    </head>
    <body>
    	<textarea name="htmlContent">
        	<html>
                <head>
                    <meta charset="UTF-8"/>
                </head>
                <body>
                    <h1>Subject</h1>
                    <p>text1</p>
                    <p>text2</p>
                </body>
            </html>
        </textarea>
    </body>
</html>

 

 

4. 결과화면

결과 pdf

 

 

오우..하다보니 한글이 안 되는걸 발견했네요. 한글용으로도 한번 체크를 해봐야겠어요.

728x90
반응형