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