Browse Source

PDF CSS 적용

pull/3/head
lkd9125 1 year ago
parent
commit
57aac511d8
  1. 4
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java
  2. 14
      pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java
  3. 6
      pav-server/src/main/resources/static/css/pdf.css
  4. 8
      pav-server/src/main/resources/templates/official_document.html

4
pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java

@ -403,7 +403,9 @@ public class BasFlightController {
param.put("userAge", 25);
param.put("userGender", "M");
pdfUtils.generatePDF(param);
String htmlContent = pdfUtils.getHtmlToString(param);
pdfUtils.generatePDF(htmlContent);
}

14
pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java

@ -43,8 +43,8 @@ public class PdfUtils {
private final String FILE_BASE_NAME = "LANNC_PDF.pdf";
public <T extends HashMap<String, Object>> void generatePDF(T param){
public <T extends HashMap<String, Object>> String getHtmlToString(T param){
// Thymeleaf 방식 html에 입힐 데이터 바인딩
Context context = new Context();
context.setVariable("userName", param.get("userName"));
@ -57,6 +57,11 @@ public class PdfUtils {
log.error("htmlContent -> {}", htmlContent);
return htmlContent;
}
public void generatePDF(String htmlContent){
// PDF 용지 설정하기
Document pdfDocument = new Document();
@ -67,12 +72,15 @@ public class PdfUtils {
pdfDocument.open();
CSSResolver cssResolver = new StyleAttrCSSResolver();
// CSS
// jar변환 시 CSS파일을 못 찾을수도 있어서 InputStream 사용
// CSS의 색깔은 키워드로 표기 X, #e73a3a 등 16진법으로 표기 해야함
InputStream cssStream = getClass().getClassLoader().getResourceAsStream("static/css/pdf.css");
CssFile cssFile = XMLWorkerHelper.getCSS(cssStream);
cssResolver.addCss(cssFile);
// 폰트
// Font
XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
fontProvider.register("static/font/NanumGothic.ttf", "NanumGothic");
CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
@ -93,7 +101,6 @@ public class PdfUtils {
XMLParser xmlParser = new XMLParser(xmlWorker, Charset.forName("UTF-8"));
xmlParser.parse(stringReader);
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e1){
@ -102,6 +109,7 @@ public class PdfUtils {
e2.printStackTrace();
}
finally{
pdfDocument.close();
}

6
pav-server/src/main/resources/static/css/pdf.css

@ -4,5 +4,9 @@ body{
}
p{
background-color: aquamarine;
background-color: #e73a3a;
}
div {
background-color: #e73a3a;
}

8
pav-server/src/main/resources/templates/official_document.html

@ -1,6 +1,10 @@
<html xmlns:th="http://www.thymeleaf.org">
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
<p id="d1">Thymeleaf Tutorials</p>
<p>Thymeleaf Tutorials</p>
<p>이름 : [[${userName}]]</p>
<p>나이 : [[${userAge}]]</p>
<p>성별 : [[${userGender}]]</p>

Loading…
Cancel
Save