From 57aac511d8e0116cec7345bf08f979c6e0db34b3 Mon Sep 17 00:00:00 2001 From: lkd9125 Date: Wed, 20 Sep 2023 14:15:44 +0900 Subject: [PATCH] =?UTF-8?q?PDF=20CSS=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flight/controller/BasFlightController.java | 4 +++- .../java/com/palnet/comn/utils/PdfUtils.java | 18 +++++++++++++----- .../src/main/resources/static/css/pdf.css | 6 +++++- .../resources/templates/official_document.html | 14 +++++++++----- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java b/pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java index 821ca9f1..f7832a02 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java +++ b/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); } diff --git a/pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java b/pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java index 22e21d02..536d8ee0 100644 --- a/pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java +++ b/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 > void generatePDF(T param){ + public > String getHtmlToString(T param){ // Thymeleaf 방식 html에 입힐 데이터 바인딩 Context context = new Context(); context.setVariable("userName", param.get("userName")); @@ -57,22 +57,30 @@ public class PdfUtils { log.error("htmlContent -> {}", htmlContent); + return htmlContent; + } + + public void generatePDF(String htmlContent){ + // PDF 용지 설정하기 Document pdfDocument = new Document(); - try { + try { PdfWriter writer = PdfWriter.getInstance(pdfDocument, new FileOutputStream(this.FILE_BASE_NAME)); writer.setInitialLeading(12.5f); 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); @@ -92,8 +100,7 @@ public class PdfUtils { XMLWorker xmlWorker = new XMLWorker(cssResolverPipeline, true); XMLParser xmlParser = new XMLParser(xmlWorker, Charset.forName("UTF-8")); - xmlParser.parse(stringReader); - + xmlParser.parse(stringReader); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e1){ @@ -102,6 +109,7 @@ public class PdfUtils { e2.printStackTrace(); } finally{ + pdfDocument.close(); } diff --git a/pav-server/src/main/resources/static/css/pdf.css b/pav-server/src/main/resources/static/css/pdf.css index 6a89f1d1..2567b876 100644 --- a/pav-server/src/main/resources/static/css/pdf.css +++ b/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; } \ No newline at end of file diff --git a/pav-server/src/main/resources/templates/official_document.html b/pav-server/src/main/resources/templates/official_document.html index f79021aa..ed34dda2 100644 --- a/pav-server/src/main/resources/templates/official_document.html +++ b/pav-server/src/main/resources/templates/official_document.html @@ -1,8 +1,12 @@ - - -

Thymeleaf Tutorials

+ + + + + + +

Thymeleaf Tutorials

이름 : [[${userName}]]

나이 : [[${userAge}]]

-

성별 : [[${userGender}]]

+

성별 : [[${userGender}]]

- \ No newline at end of file +