이 라이브러리를 받아서 사용을 해야해
Mvnrepository 에 들어가서 itext 를 검색해서
IText, A Free Java PDF Library 클릭해서 들어가
2.1.7 클릭
여기에 있는 소스코드 복사해 와서
붙여 넣기하면 라이브러리가 받아져
다 받아지기를 기다린 다음에
컨트롤러과 view 패키지 만들어 주고
servlet-context.xml 에 들어가서
component-scan 을 추가해줘
그래야 Bean 객체가 되는 것임
그리고
BeanNameViewResolver를 0으로 설정해 줘야
controller 에서 BeanName 을 먼저 찾아
위에서 만든 PdfController 에
DB에서 가져와야 하는데 일단은 Sample data를 넣어주고
BeanNameViewResolver를 설정해 줬었으니 setViewName해서 return 시켜줘
animal 이라는 키 값으로 return 시키면
@component("BeanName") 해주고 ( BeanName 을 pdfDowmView라고 해줬으니 )
AbstractPdfView 를 extends 해준다음에 오버라이딩 되면 파란 네모가 arg0,1,2,3 이렇게 되어 있을 텐데
위와 같이 수정해 주고 에러 난 것들 임포트 해준다음
animal 이라는 키값으로 보낸 것을 받기위해 get("animal") 해줘
위에 소스코드가 밑에 조금 짤린거라서 가져옴
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | package com.acorn.class5.pdf.view; import java.net.URLEncoder; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; import org.springframework.web.servlet.view.AbstractView; import org.springframework.web.servlet.view.document.AbstractPdfView; import com.lowagie.text.Cell; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.Table; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; @Component("pdfDownView") public class PdfDownView extends AbstractPdfView{ @Override protected void buildPdfDocument(Map<String, Object> model, Document doc, PdfWriter writer, HttpServletRequest req, HttpServletResponse res) throws Exception { // TODO Auto-generated method stub System.out.println("---- PdfDownloadView.buildPdfDocument() ----"); String userAgent = req.getHeader("User-Agent"); String fileName = "test.pdf"; if(userAgent.indexOf("MSIE") > -1){ fileName = URLEncoder.encode(fileName, "utf-8"); }else{ fileName = new String(fileName.getBytes("utf-8"), "iso-8859-1"); } res.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";"); res.setHeader("Content-Transfer-Encoding", "binary"); Map<String, String> map = (HashMap<String, String>)model.get("animal"); Table table = new Table(2, map.size()+1); table.setPadding(5); BaseFont baseFont = BaseFont.createFont("c:\\windows\\fonts\\batang.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); Font font = new Font(baseFont); Cell cell = new Cell(new Paragraph("order", font)); cell.setHeader(true); table.addCell(cell); cell = new Cell(new Paragraph("page", font)); cell.setHeader(true); table.addCell(cell); table.endHeaders(); Set<String> set = map.keySet(); Iterator<String> it = set.iterator(); while(it.hasNext()){ String key = it.next(); System.out.println("key : " + key); System.out.println("value : " + map.get(key)); table.addCell(key); table.addCell(map.get(key)); } doc.add(table); } } | cs |
이게 전체 소스코드
이게 동작하는지 보기 위해
이렇게 추가해주고
실행시켜보면
이 링크 클릭하면
test.pdf 가 받아졌어
sample data 가 추출된 것을 확인가능 함
'FrameWork > spring' 카테고리의 다른 글
스프링의 핵심 3대요소 (0) | 2017.09.11 |
---|---|
spring 설명 그림 (0) | 2017.09.07 |
Spring_Aop_Anno2 (0) | 2017.07.31 |
Spring_Aop_Anno (0) | 2017.07.31 |
Spring_Aop (0) | 2017.07.31 |