5. pdf 생성
가. itextpdf 라이브러리
- API : http://developers.itextpdf.com/examples-itext5
- 한글 처리를 위해서는 폰트 정보가 필요함
1) pom.xml에 아래 코드를 추가한다.
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-pdfa</artifactId>
<version>5.5.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-xtra</artifactId>
<version>5.5.13</version>
</dependency>
<dependency>
<groupId>com.itextpdf.tool</groupId>
<artifactId>xmlworker</artifactId>
<version>5.5.13</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
pdf 기능을 테스트하기 위해 admin_menu.jsp
2) views/include/admin_menu.jsp 에
<a href="${path}/pdf/list.do">PDF</a> 추가한다.
3) controller.PdfController.java
@Controller
@RequestMapping("/pdf/*")
public class PdfController {
@Inject
PdfService pdfService;
@RequestMapping("list.do")
public ModelAndView list() throws Exception {
String result = pdfService.createPdf();
return new ModelAndView("pdf/result", "message", result);
}
}
4) service.pdf.PdfService.java
public interface PdfService {
public String createPdf();
}
4) service.pdf.PdfServiceImpl.java
@Service
public class PdfServiceImpl implements PdfService {
@Inject
CartService cartService;
@Override
public String createPdf() {
String result = "";
try {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream("d:/springSample.pdf"));
document.open();
BaseFont baseFont = BaseFont.createFont(
"c:/windows/fonts/malgun.ttf",
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font font = new Font(baseFont, 12);
PdfPTable table = new PdfPTable(4);
Chunk chunk = new Chunk("장바구니", font);
Paragraph ph = new Paragraph(chunk);
ph.setAlignment(Element.ALIGN_CENTER);
document.add(ph);
document.add(Chunk.NEWLINE); // Chunk : 큰 떵어리
document.add(Chunk.NEWLINE);
PdfPCell cell1 = new PdfPCell(new Phrase("상품명", font)); // Phrase: 구, 구문
cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
PdfPCell cell2 = new PdfPCell(new Phrase("단가", font));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
PdfPCell cell3 = new PdfPCell(new Phrase("수량", font));
cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
PdfPCell cell4 = new PdfPCell(new Phrase("금액", font));
cell4.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell1);
table.addCell(cell2);
table.addCell(cell3);
table.addCell(cell4);
List<CartDTO> items = cartService.listCart("gksmf");
for(int i=0; i<items.size(); i++) {
CartDTO dto = items.get(i);
PdfPCell cellProductName =
new PdfPCell(new Phrase(dto.getProduct_name(), font));
PdfPCell cellPrice =
new PdfPCell(new Phrase(""+dto.getPrice(), font));
PdfPCell cellAmount =
new PdfPCell(new Phrase(""+dto.getAmount(), font));
PdfPCell cellMoney =
new PdfPCell(new Phrase(""+dto.getMoney(), font));
table.addCell(cellProductName);
table.addCell(cellPrice);
table.addCell(cellAmount);
table.addCell(cellMoney);
}
document.add(table);
document.close();
result = "pdf 파일이 생성되었습니다.";
} catch (Exception e) {
e.printStackTrace();
result = "pdf 파일 생성 실패 ...";
}
return result;
}
}
일반사용자로 로그인 후 장바구니에 몇 개를 담고서
관리자로 로그인하고 pdf 파일을 생성해 본다.
PdfServiceImpl의 cartService.listCart("gksmf");에서
사용자 아이디를 넣어준다.
5) views/pdf/result.jsp
파일이 생성되었는지 메시지만 띄워준다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>main</title>
<%@ include file="../include/header.jsp" %>
</head>
<body>
<%@ include file="../include/admin_menu.jsp" %>
<h2>${message }</h2>
</body>
</html>
'프로그래밍 > JAVA & SPRING' 카테고리의 다른 글
[LifeSoft] spring 13강 AOP의 개요, 로그수집 예제 (0) | 2020.06.07 |
---|---|
[LifeSoft] spring 12강 Google Chart, JFree Chart (0) | 2020.06.07 |
[LifeSoft] spring 10강 관리자 로그인/로그아웃 기능, 상품 등록/수정/삭제 (0) | 2020.06.07 |
[LifeSoft] spring 9강 로그인/로그아웃 처리, 장바구니 기능 만들기 (0) | 2020.06.07 |
[LifeSoft] spring 8강 상품관리(상품목록, 상세화면) (0) | 2020.06.07 |