Browse Source

DB Table Insert추가

pull/3/head
lkd9125 1 year ago
parent
commit
30a9f2dd2f
  1. 13
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java
  2. 2
      pav-server/src/main/java/com/palnet/biz/jpa/entity/ComFileBas.java
  3. 87
      pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java

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

@ -36,6 +36,7 @@ import com.palnet.biz.api.comn.model.ComnPagingRs;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.biz.jpa.entity.ComFileBas;
import com.palnet.biz.jpa.repository.com.ComFileBasRepository;
import com.palnet.biz.scheduler.ctr.service.CtrTrnsLctnService;
import com.palnet.comn.exception.CustomException;
@ -396,17 +397,19 @@ public class BasFlightController {
@GetMapping("/test/createLancePDF")
public void createLancePDF() {
log.warn("안뇽");
HashMap<String, Object> param = new HashMap<>();
param.put("userName", "이경도");
param.put("userAge", 25);
param.put("userGender", "M");
param.put("userGender", "M");
pdfUtils.getSaveName("LanncPDF.pdf");
String htmlContent = pdfUtils.getHtmlToString(param);
pdfUtils.generatePDF(htmlContent);
ComFileBas comFileBas = pdfUtils.generatePDF(htmlContent);
comFileBasRepository.save(comFileBas);
}

2
pav-server/src/main/java/com/palnet/biz/jpa/entity/ComFileBas.java

@ -43,7 +43,7 @@ public class ComFileBas implements Serializable {
// @Temporal(TemporalType.TIMESTAMP)
@Column(name="DEL_YN", columnDefinition = "TIMESTAMP")
private Instant delYn;
private String delYn = "N";
@Column(name="DEL_USER_ID")
private String delUserId;

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

@ -1,10 +1,15 @@
package com.palnet.comn.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.Instant;
import java.util.HashMap;
import org.springframework.beans.factory.annotation.Autowired;
@ -29,6 +34,8 @@ import com.itextpdf.tool.xml.pipeline.css.CssResolverPipeline;
import com.itextpdf.tool.xml.pipeline.end.PdfWriterPipeline;
import com.itextpdf.tool.xml.pipeline.html.HtmlPipeline;
import com.itextpdf.tool.xml.pipeline.html.HtmlPipelineContext;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.jpa.entity.ComFileBas;
import lombok.extern.slf4j.Slf4j;
@ -37,13 +44,38 @@ import lombok.extern.slf4j.Slf4j;
public class PdfUtils {
@Autowired
private TemplateEngine templateEngine;
private TemplateEngine templateEngine;
@Autowired
private JwtTokenUtil jwtTokenUtil;
// @Value("${}") // 기본 경로 지정할 곳
private final String BASE_PATH = "";
private final String FILE_BASE_NAME = "LANNC_PDF.pdf";
private final String FILE_BASE_NAME = "LANNC_PDF";
private final String FILE_EXTENSION = ".pdf";
public String getSaveName(String baseName){
String date = InstantUtils.toDateString(Instant.now()).replace("-", "");
StringBuilder result = new StringBuilder();
result.append(date)
.append("_")
.append(System.currentTimeMillis())
.append("_")
.append(baseName);
return result.toString();
}
/**
* Thymeleaf HTML 파일을 데이터 바인딩하여 String으로 변환
* @param <T>
* @param param
* @return
*/
public <T extends HashMap<String, Object>> String getHtmlToString(T param){
// Thymeleaf 방식 html에 입힐 데이터 바인딩
Context context = new Context();
@ -55,18 +87,23 @@ public class PdfUtils {
// official_document html에 바인딩할 데이터 넣고 돌려서 String형식으로 뽑아옴
String htmlContent = templateEngine.process("official_document", context);
log.error("htmlContent -> {}", htmlContent);
return htmlContent;
}
public void generatePDF(String htmlContent){
/**
* HTML 태그로 이루어진 String값을 PDF로 변환
* @param htmlContent
*/
public ComFileBas generatePDF(String htmlContent){
// PDF 용지 설정하기
Document pdfDocument = new Document();
ComFileBas result = new ComFileBas();
try {
PdfWriter writer = PdfWriter.getInstance(pdfDocument, new FileOutputStream(this.FILE_BASE_NAME));
try {
String fileName = getSaveName(this.FILE_BASE_NAME + this.FILE_EXTENSION);
// File 저장 기본경로는 main 아래로 기본으로 잡힘
PdfWriter writer = PdfWriter.getInstance(pdfDocument, new FileOutputStream(fileName));
writer.setInitialLeading(12.5f);
pdfDocument.open();
@ -85,9 +122,7 @@ public class PdfUtils {
fontProvider.register("static/font/NanumGothic.ttf", "NanumGothic");
CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
log.info("fontProvider -> {}",fontProvider.getRegisteredFonts());
log.info("cssFile -> {}", cssFile);
// XML Worker에 넣을 PipeLine객체 생성, CssResolverPipeline 이 객체를 최종적으로 넣어야 Font,Css가 적용됨
HtmlPipelineContext htmlPipelineContext = new HtmlPipelineContext(cssAppliers);
htmlPipelineContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
@ -100,7 +135,11 @@ public class PdfUtils {
XMLWorker xmlWorker = new XMLWorker(cssResolverPipeline, true);
XMLParser xmlParser = new XMLParser(xmlWorker, Charset.forName("UTF-8"));
xmlParser.parse(stringReader);
xmlParser.parse(stringReader);
result.setFileSaveNm(fileName);
result.setFileOriNm(fileName);
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e1){
@ -108,11 +147,29 @@ public class PdfUtils {
} catch (Exception e2){
e2.printStackTrace();
}
finally{
finally{
pdfDocument.close();
}
try {
long fileSize = Files.size(Paths.get(this.BASE_PATH + result.getFileOriNm())) / 1024;
if(fileSize > 0) result.setFileSize(String.valueOf(fileSize));
} catch (IOException e) {
e.printStackTrace();
}
String userId = jwtTokenUtil.getUserIdByToken();
result.setFileGroupNo(0);
result.setFilePath(this.BASE_PATH);
result.setFileExt(this.FILE_EXTENSION);
result.setCreateDt(Instant.now());
result.setCreateUserId(userId);
log.error("Entity -> {}", result);
return result;
}
}

Loading…
Cancel
Save